我有一個帶有複選框字段的表單,供用戶接受條款和條件。目前如果驗證通過,所有字段將被存儲在數據庫中。如何驗證表單字段但不將其存儲在數據庫中
我試圖通過設置輸入變量排除這一領域:
$input = Input::except('terms_and_conditions');
但這似乎越來越忽略,因爲形式仍然驗證和各個領域得到存儲在數據庫中。
是否可以在驗證中包含字段但將其排除在數據庫之外?
的形式爲:
{{ Form::open(['route' => 'questions.store', 'method' => 'POST']) }}
{{ Form::text('firstname', '', ['placeholder' => 'First Name', 'class' => 'form-control']) }}
{{ Form::text('lastname', '', ['placeholder' => 'Last Name', 'class' => 'form-control']) }}
{{ Form::email('email', '', ['placeholder' => 'Email', 'class' => 'form-control']) }}
{{ Form::textarea('question', '', ['placeholder' => 'Question', 'class' => 'form-control']) }}
{{ Form::checkbox('terms_and_conditions', 1) }}
{{ Form::label('terms_and_conditions', 'I agree to terms and conditions') }}<br/>
<p class="text-center">{{ Form::button('', ['type' => 'submit', 'class' => 'iconic iconic-chevron-right LearnMoreChevron']) }}</p>
{{ Form::close() }}
驗證(在該模型中,用熾熱包):
public static $rules = array(
'firstname' => 'required|between:2,20',
'lastname' => 'required|between:2,30',
'email' => 'required|email',
'question' => 'required|max: 5000',
'terms_and_conditions' => 'Accepted'
);
控制器功能:
public function store() {
$input = Input::except(array('terms_and_conditions'));
$question = Question::create($input);
if ($question->save()) {
return Redirect::to('/#Questions')->with('message', 'Your question has been submitted.');
} else {
return Redirect::to('/#Questions')->withErrors($question->errors());
}
}
您需要使用[model hook](https://github.com/laravelbook/ardent#model-hooks-since-20),'beforeSave'更具體。 – Ben