laravel - 将对象发送到控制器中的“显示”方法时的空请求
问题描述
我正在尝试将一个对象发送到该show
方法,并且我得到它没有属性。
index.blade.php
<a href="{{ route('admin.specialities.show', [$speciality])}} "> {{$speciality->display_name}}</a>
网页.php
Route::resource('admin/specialities', 'SpecialtyController',
['names'=> ['index' => 'admin.specialities',
'show' => 'admin.specialities.show',]]);
SpecialtyController.php
namespace App\Http\Controllers;
use App\Models\Backend\Specialty;
use Illuminate\Http\Request;
class SpecialtyController extends Controller
{
public function index() {
return view('specialities.specialities')
->with(['specialities' => Specialty::all()]);
}
public function show(Specialty $specialty) {
dd($specialty); //<- always null atributes
return view('specialities.show', compact('specialty'));
}
}
专业.php
namespace App\Models\Backend;
use Illuminate\Database\Eloquent\Model;
class Specialty extends Model
{
/**
* Get the route key for the model.
*
* @return string
*/
public function getRouteKeyName()
{
return 'slug';
}
}
任何想法可能是错误的或在哪里检查?
解决方案
您应该id
在路线上通过:
<a href="{{ route('admin.specialities.show', $speciality->id)}} "> {{$speciality->display_name}}</a>
在您的控制器中,您可以找到特定的模型:
public function show(id)
{
$speciality = Specialty::FindOrFail($id);
return view('specialities.show', compact('speciality'));
}
将您的索引方法更改为:
public index()
{
$specialities = Specialty::all();
return view('specialities.specialities', compact('specialities'));
}
笔记
声明变量时应小心,您有一个名为Specialty的模型,但代表该模型的变量是$speciality
推荐阅读
- react-native - 未强制执行 ReactiveSearch 默认查询
- c# - HtmlNode 从嵌套跨度中获取内部文本
- python-3.x - 在 slack API 上发送我的第一条消息
- sql - 如何引用数据框列中的特定字符
- django - Postgresql ArrayField vs ForeignKey?哪一个是高性能的?
- c# - 使用实体框架查询多个条件
- freeradius - FreeRadius 无法设置自定义变量
- reactjs - manifest.json 中的环境变量 - Chrome 扩展
- r - 无法使用循环中的发现创建 data.frame
- uml - Enterprise Architect - 可执行状态机 - 基于时间的转换