如何在 laravel 中定义表单内的动作?

Posted

技术标签:

【中文标题】如何在 laravel 中定义表单内的动作?【英文标题】:How to define action inside form in laravel? 【发布时间】:2019-11-01 00:59:12 【问题描述】:

我只是想向表单添加一个动作,我正在尝试如下:

 Form::open(['action'=> ['AuthController@login'], 'method'=>"POST",'class'=>'login-form']) 

但我收到以下错误:

Action App\Http\Controllers\AuthController@login not defined. (View: D:\server\htdocs\PMS\resources\views\custom_auth\login.blade.php)

我配置 laravel 集体 html。我的代码有什么问题?

更新:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Validator;
use Auth;

class AuthController extends Controller

    function show()
        return view('custom_auth.login');
    

    public function login(Request $request)
        print_r($request); exit;
        $this->validate($request,[
            'email' => 'required|email',
            'password' => 'required|alphaNum|min:3'
        ]);

        $user_data = array(
            'email' => $request->get('email'),
            'password' => $request->get('password')
        );
        if(Auth::attempt($user_data))
            return redirect('/dashboard');
        else
            return back()->with('error','Wrong Credential');
        
    

【问题讨论】:

是否有一个名为app/Http/Controllers/AuthController.php 的文件?里面有function login吗? 是的。我查过了。 【参考方案1】:

使用Form helper 时,您无需将操作放入数组中,因此请尝试:

 Form::open(['action'=> 'AuthController@login', 'method'=>"POST",'class'=>'login-form']) 

当然,请确保 public login() 方法存在于您的 AuthController

另外,不要忘记将其添加到您的路线文件中,routes/web.php

Route::post('login', 'AuthController@login');

希望对你有帮助

【讨论】:

感谢您的宝贵时间。我更新并发现同样的错误。 你能粘贴 AuthController 的代码吗?我想看看你是否有有效的登录方法 我更新了我的问题并分享了AuthController的代码。 更新了我的答案,请尝试将其添加到您的路线文件中,查看更新后的答案

以上是关于如何在 laravel 中定义表单内的动作?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4 Form::open 设置动作

如何在 laravel 表单验证错误消息中给出自定义字段名称

在 Laravel 5 中使用表单请求验证时如何添加自定义验证规则

如何修复'动作必须是普通对象。使用自定义中间件进行异步操作。

如何在 Laravel 5.1 中从 Blade 调用控制器动作?

如何以 laravel 刀片形式生成输入选择并自定义其选项值?