我真的已经研究了几个小时,根据我所阅读的内容,这显然很容易,但我无法意识到。我将我的代码结构传递给您,以便您可以看到它,最后我会告诉您问题是什么以及它引发的错误。
控制器:角色控制器
<?php
namespace App\Http\Controllers;
use App\Models\Role;
use App\Http\Requests\Role\StoreRequest;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Http\Request;
class RoleController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
echo 'Vista index de Roles';
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('theme.backoffice.pages.role.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(StoreRequest $request, Role $role)
{
$role = $role->store($request);
return redirect()->route('backoffice.role.show'.$role);
}
/**
* Display the specified resource.
*
* @param \App\Models\Role $role
* @return \Illuminate\Http\Response
*/
public function show(Role $role)
{
return view('theme.backoffice.pages.role.show', [
'role' => $role,
]);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Role $role
* @return \Illuminate\Http\Response
*/
public function edit(Role $role)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Role $role
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Role $role)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Role $role
* @return \Illuminate\Http\Response
*/
public function destroy(Role $role)
{
//
}
}
web.php/routes
Auth::routes(['verify' => true]);
//BACKOFFICE
Route::group(['middleware'=>['auth'], 'as'=>'backoffice.'], function(){
Route::resource('role', 'App\Http\Controllers\RoleController');
});
create.blade.php
@extends('theme.backoffice.layouts.admin')
@section('title','Crear rol')
@section('head')
@endsection
@section('content')
<div class="section">
<p class="caption">Introduce los datos para crear un nuevo rol</p>
<div class="divider"></div>
<div id="basic-form" class="section">
<div class="row">
<div class="col s12 m8 offset-m2">
<div class="card-panel">
<h4 class="header2">Crear rol</h4>
<div class="row">
<form class="col s12" method="post" action="{{ route('backoffice.role.store') }}">
{{ csrf_field() }}
<div class="row">
@error('name')
<span style="color:red" class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<div class="input-field col s12">
<input id="name" type="text" name="name">
<label for="name">Nombre</label>
</div>
</div>
<div class="row">
@error('description')
<span style="color:red" class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<div class="input-field col s12">
<textarea name="description" class="materialize-textarea" id="description" cols="30" rows="10"></textarea>
<label for="email">Descripcion</label>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<button class="btn waves-effect waves-light right" type="submit">Guardar
<i class="material-icons right">send</i>
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('scripts-foot')
@endsection
show.blade.php
@extends('theme.backoffice.layouts.admin')
@section('title','Clinic')
@section('head')
@endsection
@section('content')
<div class="section">
<p class="caption"><strong>Rol: </strong>{{$role->name}}</p>
<div class="divider"></div>
<div id="basic-form" class="section">
<div class="row">
<div class="col s12 m8 offset-m2">
<div class="card-panel">
<h4 class="header2">Usuarios con el rol de {{$role->name}}</h4>
<div class="row">
<ul>
<li>Raul</li>
<li>Tomas</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('scripts-foot')
@endsection
我告诉你我的代码做了什么。
1-我们在 CREATE 视图中创建一个新角色并保存。
2-这行到store方法并保存在数据库中
3- store 方法返回到 SHOW 方法的路由的重定向,以便在所述视图中显示新创建的角色。
错误:: 缺少 [Route: backoffice.role.show] [URI: role/{role}] [缺少参数: role] 的必需参数。
我不明白我做错了什么,因为我在执行重定向时将所需的参数传递给 store 方法中的路径名。这是关于寻找不同的分辨率还是我有一个我没有意识到的错误? .非常感谢您的关注。
答案 0 :(得分:1)
问题是未收到 $role
的 backoffice.role.show
。
您可以传递期望的角色,例如(问题是您附加了“.”而不是“,”):
return redirect()->route('backoffice.role.show', $role);
如果你想明确定义角色,你可以使用别名:
return redirect()->route('backoffice.role.show', ['role' => $role]);
编辑商店方法
您可以在 routes/web.php
中使用 Resource Controller。
public function store(Request $request){
// Validation
$this->validate($request, ['name' => 'required']);
// Storing
$role = Role::create($request);
return redirect()->route('backoffice.role.show', $role);
}
有关更多信息,您可以访问Laravel Generating Url to Named Route