【问题标题】:Passing attribute from blade to route to controller将属性从刀片传递到路由到控制器
【发布时间】:2019-12-30 14:07:02
【问题描述】:

我试图找出在我的刀片中的 href 链接和路由中传递的 {id} 中使用的正确语法,但是 laravel (5.8) 的文档让我有点困惑。

我的控制器功能应该很好,但我想知道如何通过按钮 href 链接正确传递一个 ID(当前在刀片中回显),然后在路由中正确处理该 ID,这样我就不会仅在 url id\progress 处的页面,还可以在控制器函数中获取 $id。

我走对了吗?

blade.php

<?php echo($id) ?>
<button><a href=""></a></button>

web.php(路由)

Route::get('/{id}/progress', 'Track\TrackProgressController@index')
->name('track.progress');

TrackProgressController

public function index($id)
{

}

【问题讨论】:

标签: php laravel


【解决方案1】:

你可以在刀片中使用这样的代码:

<button><a href="/{{$id}}/progress"></a></button>

这会将 $id 作为参数传递给路由。你的路线会是这样的

Route::get('/{id}/progress', 'Track\TrackProgressController@index')->name('track.progress');

您可以像这样访问控制器中的 id:

public function index($id = null)
{
    dd($id);
}

【讨论】:

    【解决方案2】:

    要将单个(参数)idblade 传递到controller,如果您使用get 方法,您可以简单地使用href..

    刀片:

    <a href="{{ route('track.progress', $id)}}"></a>
    

    Web.php:

    Route::get('/{id}/progress', 'Track\TrackProgressController@index')
    ->name('track.progress');
    

    控制器:

    public function index($id)
    {
            // do something
    }
    

    并将多个参数传递给控制器​​,然后您可以在路由方法中使用array[]

    <a href="{{ route('multi.params', ['param1'  => 'param1', 'param2' => 'param2'])}}"></a>
    

    多参数路由:

    Route::get('/{param1}/{param2}', 'MyController@MyMethod')->name('multi.params');
    

    控制器:

    public function MyMethod($param1, $param2)
    {
            // do something
    }
    

    谢谢

    【讨论】:

      【解决方案3】:

      您在正确的路径上,但请更改您的路线定义以匹配官方文档中的正确语法:

      Route::get('/progress/{id}', 'Track\TrackProgressController@index')
      ->name('track.progress');
      

      然后,您可以在视图中添加 id 作为路由参数:

      <button><a href="/progress/{{$id}}"></a></button>
      

      或者另一种方式,因为你有一个路线名称:

      <button><a href="{{ route('track.progress',['id' => $id])}}"></a></button>
      

      然后,您所要做的就是在控制器中检索该 id,如下所示:

      public function index($id)
      {
        echo 'Retrieved id = '.$id;
      }
      

      【讨论】:

        【解决方案4】:

        您可以在 herf 标签中使用 Laravel 变量,例如:

        {{ route('track.progress', ['id' => $id]) }}
        

        但是,您在路由和函数中正确传递了$id

        路线

         Route::get('/{id}/progress', 'Track\TrackProgressController@index')
        ->name('track.progress');
        

        功能

        public function index($id)
        {
        
        }
        

        【讨论】:

        • 谢谢!因此,如果我这样做并让我的控制器函数使用 $id 说返回视图,那么它将按原样工作,我不需要做任何其他事情来将它放入该函数中?
        • 是的,不需要做任何事情就可以在你的函数中获取$id
        猜你喜欢
        • 2023-03-13
        • 2014-08-23
        • 2020-12-29
        • 2019-04-13
        • 2015-03-02
        • 2017-07-31
        • 2019-12-19
        • 2019-11-13
        • 1970-01-01
        相关资源
        最近更新 更多