首页 > 解决方案 > laravel (5.6) 中的隐式绑定返回一个空对象

问题描述

我正在尝试在控制器中使用“显示”方法,但是当它返回一个空对象时。

由于这种观点:

@foreach ($usuarios as $usuario2)
  <h2>{{$usuario2->nombre}}</h2>
  <a href="prurequests/{{$usuario2->id}}">ver mas2...</a>
@endforeach

通过tis路线:

Route::resource('/prurequests','PruebasControllers\PrurequestsController'); 

对此控制器的方法:

public function show(Usuario2 $usuario2)  // Ruta con implicing biding
 {
     return $usuario2;
 }

这是模型:

class Usuario2 extends Model
{
    Protected $fillable = ['nombre'];
}

我试过这个并且它有效

看法:

@foreach ($usuarios as $usuario2)
  <h2>{{$usuario2->nombre}}</h2>
  <a href="impli/{{$usuario2->id}}">ver mas...</a>
  <a href="prurequests/{{$usuario2->id}}">ver mas2...</a>
@endforeach

路线

Route::get('impli/{usuario2}', function 
(fractalwebpage\PruebasModelos\Usuario2 $usuario2) {
  return $usuario2;
});

它给我带来了数据,我不得不将模型的 nae 放入路径中。e 需要这样做,但要通过控制器。

标签: laravellaravel-5.6laravel-bladelaravel-resource

解决方案


默认情况下,Laravel 使用 url 的最后一段作为资源路由请求的占位符,因此在你的控制器方法中,你可以注入你的模型,但名称不同public function show(Usuario2 $prurequests)

但更明确的解决方案是只更改路由定义中的参数

Route::resource('/prurequests','PruebasControllers\PrurequestsController', ['parameters' => ['prurequests' => 'usuario2']]); 

这样,您可以继续按照当前的方式使用控制器

public function show(Usuario2 $usuario2)  // Ruta con implicing biding
{
   return $usuario2;
}

推荐阅读