【问题标题】:Too few arguments to function App\Http\Controllers\Auth\AdaugaJobController::create(), 0 passed and exactly 1 expected函数 App\Http\Controllers\Auth\AdaugaJobController::create() 的参数太少,通过了 0,预期正好 1
【发布时间】:2019-05-15 13:39:23
【问题描述】:

所以,我想在一个表中插入数据,我得到了这个错误 我真的不t know why. im 是 Laravel 的新手,请帮助:D

这是我的路线

Route::get('/adaugajob', 'Auth\AdaugaJobController@create')->name('adaugajob');

这是我的控制器

protected function validator(array $data)
    {

        if ($data) {
            return Validator::make($data, [
                'titlu' => ['required', 'string', 'max:255'],
                'descriere' => ['required', 'string', 'max:255'],
                'salariu_estimativ' => ['required', 'string', 'max:255'],
                'oras' => ['required', 'regex:^[0-9\-\+]{9,15}$^'],
            ]);

        }
    }

    protected function create(array $data)
    {
        if ($data) {
            Joburi::create([
                'titlu' => $data['titlu'],
                'descriere' => $data['descriere'],
                'salariu_estimativ' => $data['salariu_estimativ'],
                'oras' => $data['oras'],
            ]);
        }
    }

【问题讨论】:

  • 1) 您使用create 作为get 方法,2) 您设计了create,因此它需要一个数组,但不通过路由定义传递任何内容。创建应该通过 POST 或 PUT 完成,此时您可以从$request->get() 获取数据。路由和参数见laravel.com/docs/master/routing
  • 调用create方法需要一个数组参数。
  • @PaulCatalinAgighioleanu 如果你解决了你的问题,你应该设置正确的答案或自己添加,并将问题标记为已解决

标签: php laravel eloquent


【解决方案1】:

方法Create 需要一个数组。但是 laravel 只能发送路径参数(如果它们存在)或等效的模型绑定.....并且如果函数请求,则始终发送对象 Request

array $data参数改为

protected function create( \Illuminate\Http\Request $request)
{
    $data = $request->all();
    if ($data) {
        Joburi::create([
            'titlu' => $data['titlu'],
            'descriere' => $data['descriere'],
            'salariu_estimativ' => $data['salariu_estimativ'],
            'oras' => $data['oras'],
        ]);
    }
}

保存版本:

protected function create( \Illuminate\Http\Request $request)
{
    $data = $request->all();
    if ($data) {
        $joburi = new Joburi();
        $joburi->titlu = $data['titlu'];
        $joburi->descriere = $data['descriere'];
        $joburi->salariu_estimativ = $data['salariu_estimativ'];
        $joburi->oras = $data['oras'];
        $joburi->save();
        return $joburi;
    }
}

【讨论】:

  • 如果我想保存?像 $data->save() 它说我调用 save 到一个数组
  • 你想保存什么? Joburi 实例?为什么使用请求保存?
【解决方案2】:

试试这个。并使用 store 方法进行所有插入操作。

use Illuminate\Http\Request;

public function store(Request $request)
{
    $validatedData = $request->validate([
        'titlu' => 'required|string|max:255',
        'descriere' => 'required|string|max:255',
        'salariu_estimativ' => 'required|string|max:255',
        'oras'=> 'required|regex:^[0-9\-\+]{9,15}$^',

    ]);

    Joburi::create([
        'titlu' => $data['titlu'],
        'descriere' => $data['descriere'],
        'salariu_estimativ' => $data['salariu_estimativ'],
        'oras' => $data['oras'],
    ]);
}

【讨论】:

  • 我真的有这个问题。我改变了一切,我得到“无消息”错误
  • 改变你的路线 Route::get 到 Route::post
【解决方案3】:

在您的刀片文件中:

{{ Form::open(array('route' => 'adaugajob', 'method' => 'POST')) }}

     {{-- Your input fields here --}}

     {{ Form::submit('Save', array('class' => 'btn btn-primary')) }}

{{ Form::close() }}

在控制器文件夹中创建控制器 您的商店功能中的代码

public function store(Request $request){

   $validator = Validator::make($request->all(), [
        'titlu' => 'required|string|max:255',
        'descriere' => 'required|string|max:255',
        'salariu_estimativ' => 'required|string|max:255',
        'oras'=> 'required|regex:^[0-9\-\+]{9,15}$^',
   ]);

   if ($validator->fails()) {
        return redirect()->back()
               ->withErrors($validator)
               ->withInput();
   }

    $post = $request->all();

    Joburi::create($post);

    return redirect('/adaugajob');
}

在路由文件(web.php)中:

Route::post('/adaugajob', 'AdaugaJobController@store')->name('adaugajob');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-29
    • 2020-04-22
    • 2019-07-06
    • 2020-12-11
    • 2020-11-30
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    相关资源
    最近更新 更多