Laravel:传递的函数 0 的参数太少,而预期的正是 1”

标签 laravel arguments

我知道之前有人问过这个问题。我看过问题和答案,但找不到可以帮助我的东西。

我正在尝试将简单数据传递到我的数据库中。到目前为止,一切都很好。 我相信当我尝试添加 userID 时会出现我的问题,因为它必须从 Auth 中提取。所以这是我的 Controller 代码。

side 节点,userID 来自一个名为 users 的外部表。和 userID 将用作外键。在用户表中它被称为“id”

    <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ShopController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function index()
    {
        return view('/shop/addShop');
    }


    protected function validator(array $data)
    {
        return Validator::make($data, [
            'userid' => ['required', 'string', 'max:255'],
            'shopname' => ['required', 'string', 'max:255'],
            'address' => ['required', 'string', 'max:255'],
            'postal' => ['required', 'string', 'max:255'],
            'city' => ['required', 'string', 'max:255'],
            'phone' => ['required', 'string', 'max:255'],
        ]);
    }

    /**
     * Add Users shop  after a validation check.
     *
     * @param  array  $data
     * @return \App\
     */
    protected function create(array $data)
    {
        $userId = Auth::id();
        return User::create([
            'userid'=> $data[$userId],
            'shopname' => $data['shopname'],
            'address' => $data['address'],
            'postal' => $data['postal'],
            'city' => $data['city'],
            'phone' => $data['phone'],

        ]);
    }
}

在这里你可以看到我的路线。

<?php 

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');
Route::post('/addShop', 'ShopController@create')->name('addShop');
Route::get('/addShop', 'ShopController@index')->name('addShop');

最佳答案

使用请求

您的 create 函数需要一个数组。然而,Laravel 正在传递一个 POST 请求。因此,请改用 Request 类。您的代码应为:

namespace App\Http\Controllers;
use User;
use Illuminate\Http\Request;

protected function create(Request $data)
    {
        $userId = Auth::id();
        return User::create([
            'userid'=> $data[$userId],
            'shopname' => $data['shopname'],
            'address' => $data['address'],
            'postal' => $data['postal'],
            'city' => $data['city'],
            'phone' => $data['phone'],

        ]);
    }

关于Laravel:传递的函数 0 的参数太少,而预期的正是 1”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54127138/

相关文章:

php - 可以修改由 artisan migrate 命令创建的模板吗?

php - 无法在 laravel 5.7 中定义关系

php - WooCommerce 错误 : cURL error 60: SSL certificate problem: unable to get local issuer certificate.

php - Laravel - PDO - 更新

ruby - 为什么 f(arg, superfluous_arg) 是 ArgumentError 而 f (arg, superfluous_arg) 是 SyntaxError?

c - 返回函数指针的函数的旧 C 代码表示法

java - 将参数发送到我的捆绑 java 应用程序

php - Laravel Eloquent Relationships - 两个不同的送货地址与一个订单模型相关联

c - 如何在 main 上切换字符串参数

c++ - 如何在 C++ 中删除 CString 中的字符串