【发布时间】:2023-03-18 06:33:01
【问题描述】:
我有一个 vuejs 组件作为我的登录表单,我正在尝试通过 Laravel 控制器传递表单,类似于在 Blade.php <from method="POST" action="login"> 和 web.php Route::post('/login', 'LoginController@login') 中执行此操作的方式。
LoginController 应该简单地重定向到新视图(测试):
class LoginController extends Controller {
public function login() {
return view( 'home' )
}
}
问题在于,虽然表单确实被提交并在控制器中传递,但整个 home.blade.php html 被作为响应数据加载回来,而不是作为新的“home.blade.php”视图。
这里是vuejs登录组件:
<template>
<div id="form-input">
<form method="POST" @submit.prevent="login" :class="{ 'disable-interaction' : submitted }">
<input class="single-line-input" placeholder="Email" type="text" name="email" v-model="form.email">
<input class="single-line-input space" placeholder="Password" type="password" name="password" v-model="form.password">
<div class="large bottom">
<p v-if="error" class="error large">{{ error }}</p>
<button class="large btn-important" type="submit">sign in</button>
<a class="large btn-important-inverted" href="register">register</a>
<a class="simple-link center" v-bind:href="back">back</a>
</div>
</form>
</div>
</template>
<script>
export default {
props: {
error: String,
back: String
},
data: function() {
return {
submitted: false,
form: {
email: '',
password: ''
}
}
},
methods: {
login: function() {
this.submitted = true;
axios.post('login', this.form)
.then(res => console.log(this.form))
.catch(err => console.log(err));
this.submitted = false;
}
}
}
</script>
我只是在 login.blade.php 中调用:
@extends('layouts.auth')
@section('form')
<login-form
error="{{ isset($error) }}"
back="{{ url('home') }}"
></login-form>
@endsection
在我的web.php:
Route::get('/login', function () { return view('auth.login'); });
Route::post('/login', 'LoginController@login');
【问题讨论】: