【问题标题】:I got new function for API Controller and it's not working at this我得到了 API 控制器的新功能,但它在这方面不起作用
【发布时间】:2021-09-27 14:37:31
【问题描述】:

我将update 的状态编码为category。我在 API 中有一个新功能 控制器,所以当我点击提交时它不起作用。

当我转到 category.update 时,这个问题得到了解决,但我不能,因为该函数用于其他用途。

web.php

Route::patch('category/{$category}', 'Admin\CategoryController@change')
    ->name('category.change');
Route::resource('category', 'Admin\CategoryController')
    ->middleware('loggedin');

这是 API 控制器的新功能:

public function change($category, Request $request)
{
    $cate = Category::find($category);
    if ($cate->category_status == 0) {
        $cate->category_status = 1;
        $cate->save();
    } else {
        $cate->category_status = 0;
        $cate->save();
    }

    return back()->with('success', 'Success!');
}

list.blade.php

<form autocomplete="off" action="{{ route('category.change', [$cate->category_id]) }}" method="POST" enctype="multipart/form-data">
    @method('PATCH')
    @csrf
    <button class="fa fa-eye" type="submit"></button>
</form>

【问题讨论】:

  • 在您的路线中,$ 符号不是必需的 ...patch('category/{category}'...
  • @JuanEizmendi 谢谢你,但我有一个新问题是 category.change 未定义,
  • 当您将数组传递给 de route 助手时,需要使用参数名称作为键,在这种情况下,是唯一的,因此您可以只传递数字。 route('category.change', $cate-&gt;category_id)
  • @JuanEizmendi 非常感谢先生。它正在工作
  • @JuanEizmendi 对于具有一个参数的路线,这没有区别。您可以将值作为整数、索引数组或关联数组传递。我刚刚在我的应用程序上测试了route("users.edit", 23);route("users.edit", [23]);route("users.edit", ["user"=&gt;23]);。结果都一样。

标签: php laravel controller laravel-routing laravel-api


【解决方案1】:

首先,在路由中,删除$

Route::patch('category/{category}', 'Admin\CategoryController@change')
   ->name('category.change');

第二个 - 使用带有命名参数的路由

route('category.change', ['category' => $cate->category_id])

第三 - 在控制器动作中请求必须是第一

public function change(Request $request, $category){}

【讨论】:

    猜你喜欢
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多