ロールモデルを更新するフォームを作成しましたが、保存ボタンをクリックするとコントローラメソッドに送信されません。名前入力フィールドが無効な場合でも、検証エラーメッセージは表示されません。以下に、フォームに使用されるコードを示します。LaravelフォームPUTメソッドが動作しない
フォーム:フォームの
{!! Form::model($role, ['route' => ['roles.update', $role->id], 'method' => 'put']) !!}
@include('roles.fields')
{!! Form::close() !!}
フィールドは、次のとおり
<!-- Name Field -->
<div class="form-group col-sm-6">
{!! Form::label('name', 'Name:') !!}
{!! Form::text('name', null, ['class' => 'form-control']) !!}
</div>
<!-- Display Name Field -->
<div class="form-group col-sm-6">
{!! Form::label('display_name', 'Display Name:') !!}
{!! Form::text('display_name', null, ['class' => 'form-control']) !!}
</div>
<!-- Description Field -->
<div class="form-group col-sm-12 col-lg-12">
{!! Form::label('description', 'Description:') !!}
{!! Form::textarea('description', null, ['class' => 'form-control', 'rows' => '5']) !!}
</div>
<!-- Submit Field -->
<div class="form-group col-sm-12">
{!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}
<a href="{!! route('roles.index') !!}" class="btn btn- default">Cancel</a>
</div>
要求:
namespace App\Http\Requests;
use App\Http\Requests\Request;
use App\Models\Role;
class UpdateRoleRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return Role::$rules;
}
}
コントローラー:
/**
* Update the specified Role in storage.
*
* @param int $id
* @param UpdateRoleRequest $request
*
* @return Response
*/
public function update($id, UpdateRoleRequest $request)
{
$role = $this->roleRepository->findWithoutFail($id);
if (empty($role)) {
Flash::error('Role not found');
return redirect(route('roles.index'));
}
$role = $this->roleRepository->update($request->all(), $id);
Flash::success('Role updated successfully.');
return redirect(route('roles.index'));
}
モデル:
<?php
namespace App\Models;
use Eloquent as Model;
use Zizaco\Entrust\EntrustRole;
use Illuminate\Database\Eloquent\SoftDeletes;
class Role extends EntrustRole
{
use SoftDeletes;
public $table = 'roles';
protected $dates = ['deleted_at'];
public $fillable = [
'name',
'display_name',
'description'
];
/**
* The attributes that should be casted to native types.
*
* @var array
*/
protected $casts = [
'name' => 'string',
'display_name' => 'string'
];
/**
* Validation rules
*
* @var array
*/
public static $rules = [
'name' => 'required|unique:roles'
];
}
可能であれば助けてください。ありがとう!
私はこれを編集しましたが、これはまだ動作しません。保存ボタンをクリックしても何も起こりません。名前を挿入しないと、検証エラーメッセージが返ってきたとしましょう。メッセージは表示されません。それがうまくいかない理由は何ですか?ありがとう –
何も何も起こらない?ページがリロードされますか?もしそうなら、それは妥当性検査が失敗したことを意味し、決してコントローラに到達しなかったことを意味する検証エラーを表示するには、[documentation](https://laravel.com/docs/5.2/validation#quick-displaying-the-validation-errors)に再度お問い合わせください –
ありがとうございます。私は最終的にそれが働くように管理しました。それはロール名がユニークであったため、保存をクリックするたびにエラーメッセージが返されていました。ビューにはエラーメッセージが表示されませんでした。ちょっとばかだけど感謝:) –