php - PUT 表单导致 404 Not Found (Laravel)
问题描述
我有一个模型,用户一个 UserController 和一个登录表单,其中 PUT 指定为方法。我的路线也已定义并与表单路线相匹配。提交表单时出现错误 404 Not Found。
我试过命名路线无济于事。
用户模型
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $table = "panel_users";
protected $primaryKey = "id";
public $incrementing = true;
public $timestamps = false;
protected $fillable = ['username', 'password'];
}
用户控制器
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index() {
$user = new User;
return view('login', ['user' => $user]);
}
public function attemptLogin(Request $request, User $user) {
error_log($user);
session(['username' => $user->username]);
return redirect('/');
}
}
形式
{{ Form::model($user, ['route' => ['login.attemptlogin', $user], 'method' => 'PUT']) }}
<div class="form-group">
{{ Form::label('username', 'Username: ') }}
{{ Form::text('username', null, ['class' => 'form-control']) }}
</div>
<div class="form-group">
{{ Form::label('password', 'Password: ') }}
{{ Form::text('password', null, ['class' => 'form-control']) }}
</div>
<button class="btn btn-success" type="submit">Login</button>
{{ Form::close() }}
路线定义
Route::put('/login/attemptlogins/{user}', 'UserController@attemptLogin')->name('login.attemptlogin');
应该设置将用户名添加到会话变量并将模型输出到控制台。这两种情况都不会发生。
解决方案
试试这个,
{{ Form::model($user, ['route' => ['login.attemptlogin', $user->id], 'method' => 'PUT']) }}
在控制器中
public function attemptLogin(Request $request, $id) {
// ...
}
希望这可以帮助 :)
推荐阅读
- java - 如何从 Java 程序创建和运行 Apache JMeter 测试脚本并捕获输出?
- typescript - 打字稿 - 重复标识符'beforeEach'
- python - SQS FIFO 队列使用 BOTO send_message 仅接收一条消息
- android-room - 总是从房间查询中得到空响应
- javascript - 没有从搜索功能中获取正确的数据
- ios - 在 iPhone 上获取采样率
- powershell - 在powershell中重命名文件名的一部分
- sql - Oracle SQL:在不重复的多行列中查找特定字符的每个位置
- scala - 使用 play-slick,如何使用配置生成的数据库 API 定义通用组件
- javascript - Mogno 用户和评论