Skip to content
This repository was archived by the owner on Jul 16, 2023. It is now read-only.

Commit a2fd1e2

Browse files
author
Bilal Gültekin
committed
Form name parameter for Form::setValidation method fix bgultekin#7
1 parent 2ef1adb commit a2fd1e2

File tree

3 files changed

+57
-13
lines changed

3 files changed

+57
-13
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,14 +82,14 @@ The package uses laravel Form Builder to make validation rules work for both sid
8282
Form::text('birthdate');
8383
Form::close(); // don't forget to close form, it reset validation rules
8484
```
85-
Also if you don't want to struggle with $rules at view files, you can set it in Controller or route by using Form::setValidation . This sets rules for first Form::open
85+
Also if you don't want to struggle with $rules at view files, you can set it in Controller or route with or without form name by using Form::setValidation($rules, $formName). If you don't give form name, this sets rules for first Form::open
8686
```php
8787
// in controller or route
8888
$rules = ['name' => 'required|max:100', 'email' => 'required|email', 'birthdate' => 'date'];
89-
Form::setValidation($rules);
89+
Form::setValidation($rules, 'firstForm'); // you can also use without giving form name Form::setValidation($rules) because there is just one.
9090

9191
// in view
92-
Form::open(array('url' => 'foo/bar', 'method' => 'put'), $rules);
92+
Form::open(array('url' => 'foo/bar', 'method' => 'put', 'name' => 'firstForm'), $rules);
9393
// some form inputs
9494
Form::close();
9595
```

src/Bllim/Laravalid/Converter/Base/Converter.php

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ abstract class Converter {
4242
*/
4343
protected $validationRules = [];
4444

45+
/**
46+
* Current form name
47+
*
48+
* @var string
49+
*/
50+
protected $currentFormName = null;
51+
4552

4653
/**
4754
* Rules which specify input type is numeric
@@ -78,10 +85,11 @@ public function route()
7885
* @param array $rules Laravel validation rules
7986
*
8087
*/
81-
public function set($rules)
88+
public function set($rules, $formName = null)
8289
{
8390
if($rules === null) return;
84-
$this->validationRules = $rules;
91+
92+
$this->validationRules[$formName] = $rules;
8593
}
8694

8795
/**
@@ -90,7 +98,25 @@ public function set($rules)
9098
*/
9199
public function reset()
92100
{
93-
$this->validationRules = [];
101+
if(isset($this->validationRules[$this->currentFormName]))
102+
{
103+
unset($this->validationRules[$this->currentFormName]);
104+
}
105+
else if(isset($this->validationRules[null]))
106+
{
107+
unset($this->validationRules[null]);
108+
}
109+
}
110+
111+
/**
112+
* Set form name in order to get related validation rules
113+
*
114+
* @param array $formName Form name
115+
*
116+
*/
117+
public function setFormName($formName)
118+
{
119+
$this->currentFormName = $formName;
94120
}
95121

96122

@@ -102,7 +128,16 @@ public function reset()
102128
*/
103129
public function getValidationRules()
104130
{
105-
return $this->validationRules;
131+
if(isset($this->validationRules[$this->currentFormName]))
132+
{
133+
return $this->validationRules[$this->currentFormName];
134+
}
135+
else if(isset($this->validationRules[null]))
136+
{
137+
return $this->validationRules[null];
138+
}
139+
140+
return null;
106141
}
107142

108143
/**
@@ -112,9 +147,9 @@ public function getValidationRules()
112147
*/
113148
protected function getValidationRule($inputName)
114149
{
115-
return is_array($this->validationRules[$inputName])
116-
? $this->validationRules[$inputName]
117-
: explode('|', $this->validationRules[$inputName]);
150+
return is_array($this->getValidationRules()[$inputName])
151+
? $this->getValidationRules()[$inputName]
152+
: explode('|', $this->getValidationRules()[$inputName]);
118153
}
119154

120155
/**
@@ -124,7 +159,7 @@ protected function getValidationRule($inputName)
124159
*/
125160
protected function checkValidationRule($inputName)
126161
{
127-
return isset($this->validationRules[$inputName]);
162+
return isset($this->getValidationRules()[$inputName]);
128163
}
129164

130165

src/Bllim/Laravalid/FormBuilder.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ public function __construct(\Illuminate\Html\HtmlBuilder $html, \Illuminate\Rout
3838
* @param array $rules Laravel validation rules
3939
*
4040
*/
41-
public function setValidation($rules)
41+
public function setValidation($rules, $formName = null)
4242
{
43-
$this->converter()->set($rules);
43+
$this->converter()->set($rules, $formName);
4444
}
4545

4646
/**
@@ -73,6 +73,15 @@ public function resetValidation()
7373
public function open(array $options = array(), $rules = null)
7474
{
7575
$this->setValidation($rules);
76+
77+
if(isset($options['name']))
78+
{
79+
$this->converter->setFormName($options['name']);
80+
}
81+
else
82+
{
83+
$this->converter->setFormName(null);
84+
}
7685

7786
return parent::open($options);
7887
}

0 commit comments

Comments
 (0)