mirror of
https://github.com/codeigniter4/CodeIgniter4.git
synced 2025-02-20 11:44:28 +08:00
Update User Guide
This commit is contained in:
parent
8d2bed843a
commit
51a0849b39
@ -1253,29 +1253,29 @@ shown above. The primary benefit here is that it provides some extra navigation
|
||||
</section>
|
||||
<section id="creating-a-rule-class">
|
||||
<h4>Creating a Rule Class<a class="headerlink" href="#creating-a-rule-class" title="Permalink to this headline"></a></h4>
|
||||
<p>Within the file itself, each method is a rule and must accept a string as the first parameter, and must return
|
||||
<p>Within the file itself, each method is a rule and must accept a value to validate as the first parameter, and must return
|
||||
a boolean true or false value signifying true if it passed the test or false if it did not:</p>
|
||||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?</span><span class="nx">php</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">MyRules</span>
|
||||
<span class="p">{</span>
|
||||
<span class="k">public</span> <span class="k">function</span> <span class="nf">even</span><span class="p">(</span><span class="nx">string</span> <span class="nv">$str</span><span class="p">)</span><span class="o">:</span> <span class="nx">bool</span>
|
||||
<span class="k">public</span> <span class="k">function</span> <span class="nf">even</span><span class="p">(</span><span class="nv">$value</span><span class="p">)</span><span class="o">:</span> <span class="nx">bool</span>
|
||||
<span class="p">{</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="nx">int</span><span class="p">)</span> <span class="nv">$str</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">===</span> <span class="mi">0</span><span class="p">;</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="nx">int</span><span class="p">)</span> <span class="nv">$value</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">===</span> <span class="mi">0</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>By default, the system will look within <code class="docutils literal notranslate"><span class="pre">CodeIgniter\Language\en\Validation.php</span></code> for the language strings used
|
||||
within errors. In custom rules, you may provide error messages by accepting a <code class="docutils literal notranslate"><span class="pre">$error</span></code> variable by reference in the
|
||||
within errors. In custom rules, you may provide error messages by accepting a <code class="docutils literal notranslate"><span class="pre">&$error</span></code> variable by reference in the
|
||||
second parameter:</p>
|
||||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?</span><span class="nx">php</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">MyRules</span>
|
||||
<span class="p">{</span>
|
||||
<span class="k">public</span> <span class="k">function</span> <span class="nf">even</span><span class="p">(</span><span class="nx">string</span> <span class="nv">$str</span><span class="p">,</span> <span class="o">?</span><span class="nx">string</span> <span class="o">&</span><span class="nv">$error</span> <span class="o">=</span> <span class="k">null</span><span class="p">)</span><span class="o">:</span> <span class="nx">bool</span>
|
||||
<span class="k">public</span> <span class="k">function</span> <span class="nf">even</span><span class="p">(</span><span class="nv">$value</span><span class="p">,</span> <span class="o">?</span><span class="nx">string</span> <span class="o">&</span><span class="nv">$error</span> <span class="o">=</span> <span class="k">null</span><span class="p">)</span><span class="o">:</span> <span class="nx">bool</span>
|
||||
<span class="p">{</span>
|
||||
<span class="k">if</span> <span class="p">((</span><span class="nx">int</span><span class="p">)</span> <span class="nv">$str</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
|
||||
<span class="k">if</span> <span class="p">((</span><span class="nx">int</span><span class="p">)</span> <span class="nv">$value</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
|
||||
<span class="nv">$error</span> <span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'myerrors.evenError'</span><span class="p">);</span>
|
||||
|
||||
<span class="k">return</span> <span class="k">false</span><span class="p">;</span>
|
||||
@ -1300,21 +1300,21 @@ second parameter:</p>
|
||||
</section>
|
||||
<section id="allowing-parameters">
|
||||
<h4>Allowing Parameters<a class="headerlink" href="#allowing-parameters" title="Permalink to this headline"></a></h4>
|
||||
<p>If your method needs to work with parameters, the function will need a minimum of three parameters: the string to validate,
|
||||
<p>If your method needs to work with parameters, the function will need a minimum of three parameters: the value to validate,
|
||||
the parameter string, and an array with all of the data that was submitted the form. The <code class="docutils literal notranslate"><span class="pre">$data</span></code> array is especially handy
|
||||
for rules like <code class="docutils literal notranslate"><span class="pre">required_with</span></code> that needs to check the value of another submitted field to base its result on:</p>
|
||||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?</span><span class="nx">php</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">MyRules</span>
|
||||
<span class="p">{</span>
|
||||
<span class="k">public</span> <span class="k">function</span> <span class="nf">required_with</span><span class="p">(</span><span class="nv">$str</span><span class="p">,</span> <span class="nx">string</span> <span class="nv">$fields</span><span class="p">,</span> <span class="k">array</span> <span class="nv">$data</span><span class="p">)</span><span class="o">:</span> <span class="nx">bool</span>
|
||||
<span class="k">public</span> <span class="k">function</span> <span class="nf">required_with</span><span class="p">(</span><span class="nv">$value</span><span class="p">,</span> <span class="nx">string</span> <span class="nv">$params</span><span class="p">,</span> <span class="k">array</span> <span class="nv">$data</span><span class="p">)</span><span class="o">:</span> <span class="nx">bool</span>
|
||||
<span class="p">{</span>
|
||||
<span class="nv">$fields</span> <span class="o">=</span> <span class="nb">explode</span><span class="p">(</span><span class="s1">','</span><span class="p">,</span> <span class="nv">$fields</span><span class="p">);</span>
|
||||
<span class="nv">$params</span> <span class="o">=</span> <span class="nb">explode</span><span class="p">(</span><span class="s1">','</span><span class="p">,</span> <span class="nv">$params</span><span class="p">);</span>
|
||||
|
||||
<span class="c1">// If the field is present we can safely assume that</span>
|
||||
<span class="c1">// the field is here, no matter whether the corresponding</span>
|
||||
<span class="c1">// search field is present or not.</span>
|
||||
<span class="nv">$present</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-></span><span class="na">required</span><span class="p">(</span><span class="nv">$str</span> <span class="o">??</span> <span class="s1">''</span><span class="p">);</span>
|
||||
<span class="nv">$present</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-></span><span class="na">required</span><span class="p">(</span><span class="nv">$value</span> <span class="o">??</span> <span class="s1">''</span><span class="p">);</span>
|
||||
|
||||
<span class="k">if</span> <span class="p">(</span><span class="nv">$present</span><span class="p">)</span> <span class="p">{</span>
|
||||
<span class="k">return</span> <span class="k">true</span><span class="p">;</span>
|
||||
@ -1325,7 +1325,7 @@ for rules like <code class="docutils literal notranslate"><span class="pre">requ
|
||||
<span class="c1">// as $fields is the lis</span>
|
||||
<span class="nv">$requiredFields</span> <span class="o">=</span> <span class="p">[];</span>
|
||||
|
||||
<span class="k">foreach</span> <span class="p">(</span><span class="nv">$fields</span> <span class="k">as</span> <span class="nv">$field</span><span class="p">)</span> <span class="p">{</span>
|
||||
<span class="k">foreach</span> <span class="p">(</span><span class="nv">$params</span> <span class="k">as</span> <span class="nv">$field</span><span class="p">)</span> <span class="p">{</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="nb">array_key_exists</span><span class="p">(</span><span class="nv">$field</span><span class="p">,</span> <span class="nv">$data</span><span class="p">))</span> <span class="p">{</span>
|
||||
<span class="nv">$requiredFields</span><span class="p">[]</span> <span class="o">=</span> <span class="nv">$field</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
@ -1340,7 +1340,7 @@ for rules like <code class="docutils literal notranslate"><span class="pre">requ
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Custom errors can be returned as the fourth parameter, just as described above.</p>
|
||||
<p>Custom errors can be returned as the fourth parameter <code class="docutils literal notranslate"><span class="pre">&$error</span></code>, just as described above.</p>
|
||||
</section>
|
||||
</section>
|
||||
<section id="using-closure-rule">
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user