2017-12-28 22 views
2

ユーザーに簡単な連絡フォームを作成しようとしていて、フィールドに入力する注文IDがある場合。さもないと私はLaravelフォームの入力が不要

は、これが私のコード

Controller 
<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Http\Requests; 
use App\ContactUS; 

class ContactUSController extends Controller 
{ 
    public function contactUS() 
    { 
     return view('contactUS'); 
    } 

    public function contactUSPost(Request $request) 
    { 
     $this->validate($request, [ 
      'name' => 'required', 
      'email' => 'required|email', 
      'message' => 'required' 
     ]); 

     ContactUS::create($request->all()); 

     return back()->with('success', 'Thanks for contacting us! We will get back shortly.'); 
    } 
} 



View 

    <div class="container"> 
     <h1>Contact US Form</h1> 

     @if(Session::has('success')) 
      <div class="alert alert-success"> 
       {{ Session::get('success') }} 
      </div> 
     @endif 

     {!! Form::open(['route'=>'contactus.store']) !!} 

     <div class="form-group {{ $errors->has('name') ? 'has-error' : '' }}"> 
      {!! Form::label('Name:') !!} 
      {!! Form::text('name', old('name'), ['class'=>'form-control', 'placeholder'=>'Enter Name']) !!} 
      <span class="text-danger">{{ $errors->first('name') }}</span> 
     </div> 

     <div class="form-group {{ $errors->has('email') ? 'has-error' : '' }}"> 
      {!! Form::label('Email:') !!} 
      {!! Form::text('email', old('email'), ['class'=>'form-control', 'placeholder'=>'Enter Email']) !!} 
      <span class="text-danger">{{ $errors->first('email') }}</span> 
     </div> 

     <div class="form-group"> 
      {!! Form::label('Order ID:') !!} 
      {!! Form::number('orderId', old('orderId'), ['class'=>'form-control no-spinners', 'placeholder'=>'Do you have and order id?']) !!} 

     </div> 

     <div class="form-group {{ $errors->has('message') ? 'has-error' : '' }}"> 
      {!! Form::label('Message:') !!} 
      {!! Form::textarea('message', old('message'), ['class'=>'form-control', 'placeholder'=>'Enter Message']) !!} 
      <span class="text-danger">{{ $errors->first('message') }}</span> 
     </div> 

     <div class="form-group"> 
      <button class="btn btn-success">Contact US!</button> 
     </div> 

     {!! Form::close() !!} 

Model 

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class ContactUS extends Model 
{ 
    public $table = 'contact_us'; 

    public $fillable = ['name','email','message']; 
} 

Migration 

class CreateContactUsTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('contact_us', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name'); 
      $table->string('email'); 
      $table->text('message'); 
      $table->integer('orderId')->default('0'); 
      $table->boolean('solved')->default(false); 
      $table->timestamps(); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::dropIfExists('contact_us'); 
    } 
} 

である(彼らは疑問を持っていることを言うことができます)、「0」としてデフォルトでそれを置くので、問題である私は、上の任意の値を入れていないときフィールドOrderIdデフォルト値をとります0 しかし、数値を入力すると、1 or 2 etcはまだデータベースに0を保存します。

この反応はなぜ起こりますか?

答えて

5

、モデル内のorderIdフィールドの質量割り当てを許可する回答を

public $fillable = ['name','email','message','orderId']; 
+0

おかげで今は別の問題があります。 SQLSTATE [23000]:整合性制約違反:1048列 'orderId'はnullにはなりません(SQL: 'contact_us'(' name'、 'email'、' orderId'、 'message'、' updated_at'、 'created_at' )値(asd、[email protected]、asd、2017-12-28 12:11:03、2017-12-28 12:11:03)) ' –

+0

これは空の(NULL)値が渡されたためですフォーム –

+0

@SagarGautam ok私は理解していますが、私は 'orderId'カラムのデフォルト値を作ったのでこれは大丈夫だろうと思いました!ではない? –

関連する問題