Skip to content

Commit

Permalink
Add new methods to FormElement class
Browse files Browse the repository at this point in the history
$formElement->required('Please inser First name');

or

$formElement->addValidationMessage('required', ''Please inser First name');

or

$formElement->setValidationMessages([
    'required', ''Please inser First name'
    'unique', ''First name exists!'
]);

issue #5
  • Loading branch information
butschster committed Feb 23, 2016
1 parent 3f26dc3 commit 3f2465b
Show file tree
Hide file tree
Showing 4 changed files with 144 additions and 47 deletions.
60 changes: 35 additions & 25 deletions src/Form/Element/BaseFormElement.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,46 +31,34 @@ public function initialize()
}

/**
* @return string
* @return array
*/
public function getView()
public function getValidationRules()
{
if (is_null($this->view)) {
$reflect = new \ReflectionClass($this);
$this->view = strtolower($reflect->getShortName());
}

return $this->view;
return $this->validationRules;
}

/**
* @return Model
* @return array
*/
public function getModel()
public function getValidationMessages()
{
return $this->model;
return [];
}

/**
* @param Model $model
* @param string $rule
* @param string|null $message
*
* @return $this
*/
public function setModel(Model $model)
public function addValidationRule($rule, $message = null)
{
$this->model = $model;
$this->validationRules[] = $rule;

return $this;
}

/**
* @return array
*/
public function getValidationRules()
{
return $this->validationRules;
}

/**
* @param array|string $validationRules
*
Expand All @@ -90,19 +78,41 @@ public function setValidationRules($validationRules)
}

/**
* @param string $rule
* @return string
*/
public function getView()
{
if (is_null($this->view)) {
$reflect = new \ReflectionClass($this);
$this->view = strtolower($reflect->getShortName());
}

return $this->view;
}

/**
* @return Model
*/
public function getModel()
{
return $this->model;
}

/**
* @param Model $model
*
* @return $this
*/
public function addValidationRule($rule)
public function setModel(Model $model)
{
$this->validationRules[] = $rule;
$this->model = $model;

return $this;
}

public function save()
{

}

/**
Expand Down
19 changes: 19 additions & 0 deletions src/Form/Element/Columns.php
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ public function getParams()
public function getValidationRules()
{
$rules = parent::getValidationRules();

foreach ($this->getColumns() as $columnItems) {
foreach ($columnItems as $item) {
if ($item instanceof FormElementInterface) {
Expand All @@ -100,6 +101,24 @@ public function getValidationRules()
return $rules;
}

/**
* @return array
*/
public function getValidationMessages()
{
$messages = [];

foreach ($this->getColumns() as $columnItems) {
foreach ($columnItems as $item) {
if ($item instanceof NamedFormElement) {
$messages += $item->getValidationMessages();
}
}
}

return $messages;
}

public function save()
{
parent::save();
Expand Down
104 changes: 84 additions & 20 deletions src/Form/Element/NamedFormElement.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ abstract class NamedFormElement extends BaseFormElement
* @var bool
*/
protected $readonly;
/**
* @var array
*/
protected $validationMessages = [];

/**
* @param string $path
Expand Down Expand Up @@ -200,6 +204,86 @@ public function setReadonly($readonly)
return $this;
}

/**
* @param string $rule
* @param string|null $message
*
* @return $this
*/
public function addValidationRule($rule, $message = null)
{
parent::addValidationRule($rule);

if (! is_null($message)) {
$this->addValidationMessage($rule, $message);
}

return $this;
}

/**
* @param string|null $message
*
* @return $this
*/
public function required($message = null)
{
$this->addValidationRule('required', $message);

return $this;
}

/**
* @param string|null $message
*
* @return $this
*/
public function unique($message = null)
{
$this->addValidationRule('_unique', $message);

return $this;
}

/**
* @return array
*/
public function getValidationMessages()
{
$messages = parent::getValidationMessages();

foreach ($this->validationMessages as $rule => $message) {
$messages[$this->getName().'.'.$rule] = $message;
}

return $messages;
}

/**
* @param array $validationMessages
*
* @return $this
*/
public function setValidationMessages($validationMessages)
{
$this->validationMessages = $validationMessages;

return $this;
}

/**
* @param string $rule
* @param string $message
*
* @return $this
*/
public function addValidationMessage($rule, $message)
{
$this->validationMessages[$rule] = $message;

return $this;
}

/**
* @return mixed
*/
Expand Down Expand Up @@ -244,26 +328,6 @@ public function getValidationRules()
return [$this->getName() => $rules];
}

/**
* @return $this
*/
public function required()
{
$this->addValidationRule('required');

return $this;
}

/**
* @return $this
*/
public function unique()
{
$this->addValidationRule('_unique');

return $this;
}

/**
* @return array
*/
Expand Down
8 changes: 6 additions & 2 deletions src/Form/FormDefault.php
Original file line number Diff line number Diff line change
Expand Up @@ -378,17 +378,21 @@ public function validate(ModelConfiguration $model)
}

$rules = [];
$messages = [];

$this->getItems()->each(function ($item) use (&$rules) {
$this->getItems()->each(function ($item) use (&$rules, &$messages) {
if ($item instanceof FormElementInterface) {
$rules += $item->getValidationRules();
$messages += $item->getValidationMessages();
}
});

$data = Request::all();

$verifier = app('validation.presence');
$verifier->setConnection($this->getModelObject()->getConnectionName());
$validator = Validator::make($data, $rules);

$validator = Validator::make($data, $rules, $messages);
$validator->setPresenceVerifier($verifier);

if ($validator->fails()) {
Expand Down

0 comments on commit 3f2465b

Please sign in to comment.