【问题标题】:VueJS variable inside URL::action in LaravelLaravel 中 URL::action 中的 VueJS 变量
【发布时间】:2016-02-05 23:16:01
【问题描述】:

我是 VueJS 的新手。

我有一个使用 Laravel Helpers 的链接:

<a href="{!!   URL::action('TournamentController@edit',  $tournament->id) !!}">{{ $tournament->id }}</a>

因为它将在 VueJS v-for 中,所以现在我需要引用我使用 AJAX 加载的 Vue 变量。

所以,我试着这样写:

<a href="{!!   URL::action('TournamentController@edit',  @{{ tournament.id }} ) !!}">@{{ tournament.id }}</a>

但我明白了

Parse error: syntax error, unexpected '{' (View: /home/vagrant/Code/resources/views/tournaments/index.blade.php)

知道如何混合 Laravel Helper 和 VueJS 吗?

【问题讨论】:

    标签: php laravel vue.js


    【解决方案1】:

    首先,您似乎缺少 @{{ tournament.id }} 周围的引号。

    但在我自己玩过之后,由于路线使用与占位符相同的括号,目前似乎不可能。

    一种解决方法是在某处创建一个简单的函数,以生成具有唯一占位符的 url,然后在生成的 url 上执行 str_replace 调用。

    【讨论】:

      【解决方案2】:

      这是我不喜欢助手的地方,我已经完全停止使用它们。恕我直言,最好的方法是为此创建路由(或 Route::controller)并将这些 url 映射到控制器。然后使用类似的东西:

      <a href="{{url('tournament/edit')}}/@{{ tournament.id }}">@{{ tournament.id }}</a>
      

      您的路线可能类似于:

      Route::controller('tournament','TournamentController');
      

      以及你在控制器中的功能:

      function getEdit($tournament_id){
         // something something
      }
      

      这样的事情会起作用

      【讨论】:

      • 这可以很好地工作,但它假设参数总是在 url /tournament/edit/1 的末尾,如果你想要这样的 url /tournament/1/edit,这是行不通的。几乎都取决于你的喜好。 :)
      • 也可以通过在函数edit($id=false)之类的函数中设置默认值来安排,如果传递了id,则只拉一篇文章,否则可能重定向到文章列表?这都是关于架构而不是偏好。您应该更喜欢什么是逻辑以及什么最适合您的业务逻辑。如果 URL 损害了您构建应用程序的方式,那么最好重新考虑您的 URL
      • 那么当 URL 是这样的时候,你将如何解决这个问题:/tournaments/1/contestants/edit/1/?
      • 我确信会有几种解决方案。我会做一个正则表达式或一个专门的类来选择动作。为一个功能发送所有内容,该功能将负责选择正确的操作。单一责任原则。一个有责任选择的功能和每个其他功能也将有特定的责任。但是,嘿,这将是我会选择的。
      猜你喜欢
      • 2020-08-05
      • 2016-01-06
      • 1970-01-01
      • 2018-05-30
      • 2013-08-20
      • 2016-11-05
      • 2023-02-15
      • 2014-06-22
      • 2022-07-16
      相关资源
      最近更新 更多