Update User Guide

This commit is contained in:
kenjis 2023-02-02 23:47:09 +00:00
parent 8d2bed843a
commit 51a0849b39
2 changed files with 13 additions and 13 deletions

View File

@ -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">&lt;?</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">&amp;$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">&lt;?</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">&amp;</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">&amp;</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">&#39;myerrors.evenError&#39;</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">&lt;?</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">&#39;,&#39;</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">&#39;,&#39;</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">-&gt;</span><span class="na">required</span><span class="p">(</span><span class="nv">$str</span> <span class="o">??</span> <span class="s1">&#39;&#39;</span><span class="p">);</span>
<span class="nv">$present</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">required</span><span class="p">(</span><span class="nv">$value</span> <span class="o">??</span> <span class="s1">&#39;&#39;</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">&amp;$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