iT邦幫忙

1

Laravel ajax put 在routes 裡該怎麼打

  • 分享至 

  • xImage

UserController.php

public function updateuserdata(Request $request, $id)
 {
    //更新sql 程式碼
 }

edit.blade.php

<script type="text/javascript">
  function save_user_data(id,name) {
   $.ajax({
            type: "PUT",
            dataType: 'json',
            url: "<?php echo route('user.updateuserdata', '1'); ?>",
            data: {
                _token: "{{ csrf_token() }}",
                id: id,
                name: name
            },
            .....
</script>

目前我是這樣打

Route::put('/user/updateuserdata', 'App\Http\Controllers\User\UserController@updateuserdata')->name('updateuserdata');

但都出錯

顯示Route [user.updateuserdata] not defined.

請問在 routes\web.php 裡面要怎麼打才可以讓edit.blade.php 找到UserController.php 裡面的updateuserdata() ??

且問個, 用的是 laravel 那一版呢? 因為 laravel9 之後就不支援 Class@Method 的寫法囉!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

4
woeichern
iT邦新手 1 級 ‧ 2022-12-20 17:56:18
最佳解答

V大所定義的 Route:
Route::put('/user/updateuserdata', 'App\Http\Controllers\User\UserController@updateuserdata')->name('updateuserdata');

Route的名稱是 updateuserdata
因此V大在 edit.blade.php
應該調用 route('updateuserdata') 而非 route('user.updateuserdata')

1

這裏先糾正一些寫做行為。

即然都已經使用了blade。
那就不該再看到

<?php .....?>

這種鬼東西存在。

正常一般來說,因該要在控制器呼叫 view 的情況下就給與連結的參數
再使用以下的方式來輸出變數。

{{$變數}}

當然了,其實Laravel也提供了route函數可供利用
而route最佳用法則是使用name別名處理。

如 woeichern 所說的。你的路由已經命名為 updateuserdata
那你就該使用其name來呼叫對應的指定路由。

v60i iT邦新手 3 級 ‧ 2022-12-20 23:38:57 檢舉

謝謝大大的提點寫做行為
小弟會留意

froce iT邦大師 1 級 ‧ 2022-12-21 10:12:05 檢舉

blade會留這種舊時代寫法也是頗莫名其妙...

我要發表回答

立即登入回答