2014-07-10 28 views
0

我有一個帶有複選框字段的表單,供用戶接受條款和條件。目前如果驗證通過,所有字段將被存儲在數據庫中。如何驗證表單字段但不將其存儲在數據庫中

我試圖通過設置輸入變量排除這一領域:

$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()); 
    } 
} 
+0

您需要使用[model hook](https://github.com/laravelbook/ardent#model-hooks-since-20),'beforeSave'更具體。 – Ben

回答

0

我要說排除由於它不屬於該模型,因此不適用於該模型。

if (! (bool) Input::get("terms_and_conditions")) { 
    return Redirect::to('/#Questions')->withErrors(array("You need to accept our terms and conditions")); 
} 
+0

感謝您的信息,這不是它在文檔中顯示的方式:http://laravel.com/docs/requests我嘗試了兩種方法,但都沒有達到預期的效果。 –

+0

我以爲你在使用Laravel 3,對不起。你能否把你的觀點加入你的文章? – Ruke

+0

我認爲這是工作,但顯然不是。我的確在使用Laravel 4和Ardent Validation軟件包。我只是更新了問題以包含代碼。 –

相關問題