我的文章和标签表之间存在多对多的关系,并希望要求用户在创建/编辑文章表单中输入标签。我正在使用Ardent进行验证,并在我的文章模型中有以下内容:
class Article extends Ardent {
use PresentableTrait;
protected $presenter = 'presenters\ArticlePresenter';
protected $fillable = ['category_id', 'title', 'description', 'content', 'published'];
public static $rules = array(
'title' => 'required',
'description' => 'required',
'content' => 'required|min:250',
'category_id' => 'exists:categories,id',
'tags' => 'required'
);
public function tags()
{
return $this->belongsToMany('Tag', 'article_tag', 'article_id', 'tag_id');
}
}
我的表单输入:
<div class="form-group @if ($errors->has('tags')) has-error @endif">
{{ Form::label('tags', 'Tags') }}
@if(!isset($article))
{{ Form::text('tags', null, array('class' => 'form-control')) }}
@else
{{ Form::text('tags', $article->present()->implodeTags, array('class' => 'form-control')) }}
@endif
@if ($errors->has('tags')) <p class="help-block">{{ $errors->first('tags') }}</p> @endif
</div>
但即使我在标签字段中输入内容,验证也会失败,为什么会这样?
答案 0 :(得分:0)
我找到了原因; tags
变量未传递给Ardent。
要解决此问题,我将tags
添加到fillable
变量:
protected $fillable = ['category_id', 'title', 'description', 'content', 'published', 'tags'];
此外,我添加了以下代码,在Ardent readme file中解释:
public $autoPurgeRedundantAttributes = true;
function __construct($attributes = array()) {
parent::__construct($attributes);
$this->purgeFilters[] = function($key) {
$purge = array('tags');
return ! in_array($key, $purge);
};
}
答案 1 :(得分:0)
现在possible验证最新版本的Administrator中的关系数据。