首页 文章

laravel(5.6)中的隐式绑定会重新捕获空对象

提问于
浏览
0

我试图在控制器中使用方法'show',但是当它返回一个空对象时 .

由于这个观点:

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

通过这条路线:

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放在路线上 . 我需要通过控制器来做到这一点 .

2 回答

  • 0

    默认情况下,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;
    }
    
  • 0

    当您尝试在资源控制器中进行隐式绑定时,则在创建资源控制器时,您必须添加 --model 选项

    php artisan make:controller PrurequestsController --resource --model=Usuario2
    

    指定资源模型如果使用路径模型绑定并希望资源控制器的方法键入提示模型实例,则可以在生成控制器时使用--model选项:

    查看详情https://laravel.com/docs/5.6/controllers#resource-controllers

相关问题