herroffizier/yii2-attribute-index-validator

Yii2 验证器,为属性值添加递增索引以使它们唯一。

1.0.0 2016-03-29 13:15 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:03:22 UTC


README

Build Status Scrutinizer Code Quality Code Coverage Code Climate

此验证器通过为重复值添加递增索引来解决唯一模型属性的价值冲突。例如,如果已存在具有的项目,则<title>将变为<title>-1。</p> <p>此类行为可能对生成URL等任务很有用。</p> <h2 class="heading-element">安装</h2><a id="user-content-installation" class="anchor" href="#user-content-installation" rel="nofollow noindex noopener external ugc"></a> <p>使用Composer安装验证器</p> <pre class="notranslate"><code>composer require --prefer-dist "herroffizier/yii2-attribute-index-validator:@stable" </code></pre> <h2 class="heading-element">使用方法</h2><a id="user-content-usage" class="anchor" href="#user-content-usage" rel="nofollow noindex noopener external ugc"></a> <p>在模型规则数组中添加验证器,在<code>required</code>和<code>unique</code>验证器(如果有)之前。</p> <pre><span class="pl-k">use</span> herroffizier\yii2aiv\<span class="pl-v">AttributeIndexValidator</span>; <span class="pl-c1">.</span>.<span class="pl-c1">.</span> public <span class="pl-k">function</span> <span class="pl-en">rules</span>() { return [ [[<span class="pl-s">'<span class="pl-s">attribute</span>'</span>], <span class="pl-v">AttributeIndexValidator</span>::<span class="pl-en">className</span>()], [[<span class="pl-s">'<span class="pl-s">attribute</span>'</span>], <span class="pl-s">'<span class="pl-s">required</span>'</span>], [[<span class="pl-s">'<span class="pl-s">attribute</span>'</span>], <span class="pl-s">'<span class="pl-s">unique</span>'</span>], ]; }</pre> <p>验证器有几个选项可以自定义其行为。</p> <ul> <li><code>separator</code>设置原始值和索引之间的分隔符。默认分隔符是<code>-</code>。</li> <li><code>startIndex</code>定义起始索引。默认值是<code>1</code>。</li> <li><code>filter</code>定义应用于检查属性唯一性的查询的额外过滤器。可以是字符串、数组或匿名函数。在字符串或数组的情况下,<code>filter</code>值将传递给<code>\yii\web\ActiveQueryInterface::andWhere()</code>方法。在匿名函数的情况下,其签名必须是<code>function($query)</code>,并将<code>\yii\web\ActiveQueryInterface</code>实例传递给它。默认值是<code>null</code>。</li> </ul> </div> </div> </div> </section> </section> </section> <footer class="wrapper-footer"> <nav class="container"> <div class="row"> <ul class="social col-xs-7 col-sm-4 col-md-2 pull-right"> <li><a href="http://github.com/composer/packagist" title="GitHub"><span class="icon-github"></span></a></li> <li><a href="https://twitter.com/packagist" title="Follow @packagist"><span class="icon-twitter"></span></a></li> <li><a href="mailto:contact@packagist.org" title="Contact"><span class="icon-mail"></span></a></li> </ul> <ul class="col-xs-4 col-sm-4 col-md-2"> <li><a href="/about">About Packagist</a></li> <li><a href="/feeds/" rel="nofollow">Atom/RSS Feeds</a></li> </ul> <div class="clearfix visible-xs-block"></div> <ul class="col-xs-3 col-sm-4 col-md-2"> <li><a href="/statistics" rel="nofollow">Statistics</a></li> <li><a href="/explore/">Browse Packages</a></li> </ul> <div class="clearfix visible-xs-block visible-sm-block"></div> <ul class="col-xs-3 col-sm-4 col-md-2"> <li><a href="/apidoc">API</a></li> <li><a href="/mirrors">Mirrors</a></li> </ul> <div class="clearfix visible-xs-block"></div> <ul class="col-xs-3 col-sm-4 col-md-2"> <li><a href="https://status.packagist.org/">Status</a></li> <li><a href="https://p.datadoghq.com/sb/x98w56x71erzshui-4a54c45f82bacc991e83302548934b6a">Dashboard</a></li> </ul> </div> <div class="row sponsor"> <p class="col-xs-12">Packagist maintenance and hosting provided by <a href="https://packagist.com/"><img alt="Private Packagist" src="/img/private-packagist.svg?v=1726064759"></a></p> </div> <div class="row sponsor"> <p class="col-xs-12">Monitoring provided by <a href="https://datadog.com/"><img alt="Datadog" src="/img/datadog-light.png?v=1726064759"></a></p> </div> </nav> </footer> <script nonce="MvrPrJXeJ9fsKPItBdRdBQ=="> var algoliaConfig = {"app_id":"M58222SH95","search_key":"5ae4d03c98685bd7364c2e0fd819af05","index_name":"packagist"}; window.process = { env: { DEBUG: undefined }, }; </script> <script nonce="MvrPrJXeJ9fsKPItBdRdBQ==" src="/build/app.js?v=1726064759"></script> </body></html>