【问题标题】:Vue, sharing blade/view with two routesVue,与两条路线共享刀片/视图
【发布时间】:2020-07-19 02:08:44
【问题描述】:

我被困在这里,我不确定最好的行动方案

目前我有一个组成仪表板的刀片和 vue 组件。我有一个为仪表板加载视图的路由,以及另一个获取 ID 详细信息的路由(在事件发生时在仪表板内调用)。

现在完美运行。

问题是我希望能够在外部访问第二条路由(如 site.com/status/12345)并默认加载该 id (12345) 的数据。

现在我点击 site.com/status 并在页面创建时调用fetchEntries 来获取数据,我会根据该数据呈现一个带有链接的表格,因此如果您点击一个链接,它会传递该点击条目的 ID进入 status/{id} 以获取该特定点击条目的详细信息。然后它将返回的数据加载到详细信息屏幕中。

我在这里要做的就是做到这一点,这样如果我调用 status/12345 它就会到达该路由,并且我的控制器 details 方法。我知道我也可以在页面创建时调用该函数,但我想知道如何处理 site.com/statussite.com/status/12345 之间的区别。

我应该在这里做什么,我该怎么做?

这是我现在拥有的:

controller.php

public function index() {

    return view('Entry.status');
}

public function details($id) {

    return json_encode(Entry::getDetails($id));
}

web.php(路由)

Route::get('/Entry/status', 'Entry\EntryController@index')
    ->name('Entry.status');

Route::get('/Entry/status/{id}', 'Entry\EntryController@details')
    ->name('Entry.status');

status.vue

created() {

    this.fetchEntries();
 },

fetchEntries() {

  axios.get('/Entry/dashboard')
  .then(response => {

    this.events = response.data;

  })
  .catch(function(error) {

    console.log(error)
  })
  .finally(function() {

  })
},

getDetails(event) {

    this.detailId = event.taskt_id;

    axios.get('/Entry/status/' + this.detailId)
        .then(response => {
    ...
}

【问题讨论】:

  • site.com/status 返回刀片视图,site.com/status/12345 返回 json。你到底想要什么?我觉得你的问题不是很清楚。
  • @AndySong 是的,它现在返回 json,因为我从仪表板调用它并期待返回结果。我可以让它返回带有 json_encoded ID 的视图,我可以通过刀片将其作为 .vue 文件的道具传递,但我不确定如何根据是否存在来处理仪表板的 createdAt 部分/id 在 site.com/status 之后
  • 对不起,我还是不确定,你想实现什么,我可以理解你当前的代码。你能告诉我你的最终目标是什么吗?
  • @AndySong 假设我在仪表板上使用新路由进行内部调用,但我需要 site.com/status/12345 返回相同的 Entry.status 视图,但我需要调用这次在 onCreate 获取详细信息。我想我的主要问题是:如果有 /12345 参数,我是否只能在创建时调用我的 getDetails?
  • 所以你这么说,你如何处理 site.com/status/{id} 的刀片视图?

标签: php vue.js laravel-5.8


【解决方案1】:

如果我正确理解您的问题。我认为你可以这样做。

public function details($id) {
    if (request()->wantsJson()) {
        return json_encode(Entry::getDetails($id));
    }

    return view('Entry.detail');
}

这是你想要的吗?

【讨论】:

  • 所以如果我从 vue 组件调用它,它会像现在一样返回吗?但如果我在外部调用它,它会返回视图?
  • @TomN。 ,它不必在vue 组件中。只要是axios请求,它就会返回json,如果你从浏览器访问这个url,它就会返回刀片视图
猜你喜欢
  • 2017-08-12
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
  • 2018-03-23
  • 1970-01-01
  • 2020-01-10
  • 2022-07-20
  • 1970-01-01
相关资源
最近更新 更多