首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用laravel验证单词数

如何用laravel验证单词数
EN

Stack Overflow用户
提问于 2014-08-22 18:17:01
回答 3查看 8.8K关注 0票数 6

我试着看看如何才能用拉里来验证单词的数量,例如,如果一个文本区域只接受250个单词?

有人能帮我一下吗?我用的是拉拉4.1

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-22 20:05:17

我不认为Laravel对此有专门的方法,但是您可以使用一些简单的php来完成它。

控制器中的

代码语言:javascript
运行
复制
public function store(){

    $text = Input::get('textarea');

    if(count(explode(' ', $text)) > 250)
        return 'more than 250 words';

}
票数 3
EN

Stack Overflow用户

发布于 2016-06-25 15:55:04

对于Laravel5.1,我使用了Lisa和Richard的建议,完成了基于Laravel 5.1:验证文档的后续步骤,所有这些步骤都很好、很干净:

在"app/Providers/“中为所有验证规则创建了一个新的ValidatorServiceProvider扩展服务提供者,包括执行验证的Validator::扩展方法和返回格式化消息的::置换器,这样我们就可以告诉用户单词限制。

代码语言:javascript
运行
复制
namespace App\Providers;

use Validator;
use Illuminate\Support\ServiceProvider;

class ValidatorServiceProvider extends ServiceProvider
    {
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot(){
        Validator::extend('maxwords', function($attribute, $value, $parameters, $validator) {
            $words = preg_split( '@\s+@i', trim( $value ) );
            if ( count( $words ) <= $parameters[ 0 ] ) {
                return true;
            }
            return false;
        });
        Validator::replacer('maxwords', function($message, $attribute, $rule, $parameters) {
            return str_replace(':maxwords', $parameters[0], $message);
        });
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register(){
        //
    }
}

然后,在config/app.php中注册服务提供者:

代码语言:javascript
运行
复制
App\Providers\ValidatorServiceProvider::class,

对于验证语言,响应是resources/lang/en/validation.php:

代码语言:javascript
运行
复制
"maxwords" => "This field must have less than :maxwords words.",
票数 7
EN

Stack Overflow用户

发布于 2015-08-25 20:56:32

去年当我遇到这个问题时,我所做的是:

代码语言:javascript
运行
复制
Validator::extend( 'word_count', function ( $field, $value, $parameters ) {
    $words = preg_split( '@\s+@i', $value );
    if ( count( $words ) <= $parameters[ 0 ] ) {
        return true;
    }
    return false;
} );

这需要任何一组非空格字符,并将其视为“word”,然后计算结果的数量。如果它小于作为最大值发送的内容($parameters 0 ),则返回true,否则返回false。

它可以与Laravel 4的验证器功能一起使用,但还没有用Laravel 5进行测试。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25453262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档