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
を保存します。
この反応はなぜ起こりますか?
おかげで今は別の問題があります。 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)) ' –
これは空の(NULL)値が渡されたためですフォーム –
@SagarGautam ok私は理解していますが、私は 'orderId'カラムのデフォルト値を作ったのでこれは大丈夫だろうと思いました!ではない? –