我试着看看如何才能用拉里来验证单词的数量,例如,如果一个文本区域只接受250个单词?
有人能帮我一下吗?我用的是拉拉4.1
谢谢
发布于 2014-08-22 12:05:17
我不认为Laravel对此有专门的方法,但是您可以使用一些简单的php来完成它。
控制器中的:
public function store(){
$text = Input::get('textarea');
if(count(explode(' ', $text)) > 250)
return 'more than 250 words';
}
发布于 2016-06-25 07:55:04
对于Laravel5.1,我使用了Lisa和Richard的建议,完成了基于Laravel 5.1:验证文档的后续步骤,所有这些步骤都很好、很干净:
在"app/Providers/“中为所有验证规则创建了一个新的ValidatorServiceProvider扩展服务提供者,包括执行验证的Validator::扩展方法和返回格式化消息的::置换器,这样我们就可以告诉用户单词限制。
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中注册服务提供者:
App\Providers\ValidatorServiceProvider::class,
对于验证语言,响应是resources/lang/en/validation.php:
"maxwords" => "This field must have less than :maxwords words.",
发布于 2015-08-25 12:56:32
去年当我遇到这个问题时,我所做的是:
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进行测试。
https://stackoverflow.com/questions/25453262
复制