在 javascript 代码中重定向惯性 js 和 jetstream
Redirect in inertia js and jetstream in javascript code
我想在创建问题后被重定向到单个问题页面
summitQuestion(){
this.question_button = true
axios.post('/api/question/ask', {
'title' : this.question.title,
'body' : this.question.body,
'tags' : this.tags,
'user_id' : this.$page.props.user.id
}).then(response=>{
this.question_button = false
console.log(response.data)
}).catch(error=>{
this.question_button = false
console.log(error.response.data.errors)
if(error.response.data.errors){
this.title_errors = error.response.data.errors.title
this.body_errors = error.response.data.errors.body
}
})
},
我有这个功能我想要在请求成功后重定向我一个 spa 方式没有页面重新加载到问题单页我正在使用惯性 js 和 jetstream 我的 laravel 路由器在下面
Route::middleware(['auth:sanctum', 'verified'])->get('/question/{question}', 'App\Http\Controllers\QuestionController@show')->name('question-single');
如果您使用的是 Inertia,则应该创建一个带有链接到字段的 v-model 的表单。添加一个调用您的方法的提交类型的按钮(参见下面的方法示例)。
<form @submit.prevent="submitQuestion">
<input type="text" v-model="form.title">
<button type="submit"></button>
</form>
<script>
export default {
data() {
return {
form: this.$inertia.form({
title: this.question.title,
body: this.question.body,
tags: this.tags,
user_id: this.$page.props.user.id,
}, {
bag: 'default',
}),
}
},
methods: {
summitQuestion: function() {
this.form.post('/api/question/ask');
},
}
};
</script>
重定向可以直接在您的控制器方法上完成。
class QuestionController extends Controller
{
public function create(Request $request) {
// Create your question
return redirect()->route('your.route');
}
}
如下图惯性使用访问方法即可
this.$inertia.visit(route('question-single'), { method: 'get' });
如果您从上面的代码中得到的一切都是正确的,并且在没有重新加载页面的情况下保留了重定向,那么我想您的代码的修改将是以下示例;
summitQuestion(){
this.question_button = true
axios.post('/api/question/ask', {
'title' : this.question.title,
'body' : this.question.body,
'tags' : this.tags,
'user_id' : this.$page.props.user.id
}).then(response=>{
this.question_button = false
// console.log(response.data)
this.$inertia.visit(route('question-single'), { method: 'get', data: response.data });
}).catch(error=>{
this.question_button = false
console.log(error.response.data.errors)
if(error.response.data.errors){
this.title_errors = error.response.data.errors.title
this.body_errors = error.response.data.errors.body
}
})
},
您可以通过访问 The Official Inertiajs Website
来参考此内容
我想在创建问题后被重定向到单个问题页面
summitQuestion(){
this.question_button = true
axios.post('/api/question/ask', {
'title' : this.question.title,
'body' : this.question.body,
'tags' : this.tags,
'user_id' : this.$page.props.user.id
}).then(response=>{
this.question_button = false
console.log(response.data)
}).catch(error=>{
this.question_button = false
console.log(error.response.data.errors)
if(error.response.data.errors){
this.title_errors = error.response.data.errors.title
this.body_errors = error.response.data.errors.body
}
})
},
我有这个功能我想要在请求成功后重定向我一个 spa 方式没有页面重新加载到问题单页我正在使用惯性 js 和 jetstream 我的 laravel 路由器在下面
Route::middleware(['auth:sanctum', 'verified'])->get('/question/{question}', 'App\Http\Controllers\QuestionController@show')->name('question-single');
如果您使用的是 Inertia,则应该创建一个带有链接到字段的 v-model 的表单。添加一个调用您的方法的提交类型的按钮(参见下面的方法示例)。
<form @submit.prevent="submitQuestion">
<input type="text" v-model="form.title">
<button type="submit"></button>
</form>
<script>
export default {
data() {
return {
form: this.$inertia.form({
title: this.question.title,
body: this.question.body,
tags: this.tags,
user_id: this.$page.props.user.id,
}, {
bag: 'default',
}),
}
},
methods: {
summitQuestion: function() {
this.form.post('/api/question/ask');
},
}
};
</script>
重定向可以直接在您的控制器方法上完成。
class QuestionController extends Controller
{
public function create(Request $request) {
// Create your question
return redirect()->route('your.route');
}
}
如下图惯性使用访问方法即可
this.$inertia.visit(route('question-single'), { method: 'get' });
如果您从上面的代码中得到的一切都是正确的,并且在没有重新加载页面的情况下保留了重定向,那么我想您的代码的修改将是以下示例;
summitQuestion(){
this.question_button = true
axios.post('/api/question/ask', {
'title' : this.question.title,
'body' : this.question.body,
'tags' : this.tags,
'user_id' : this.$page.props.user.id
}).then(response=>{
this.question_button = false
// console.log(response.data)
this.$inertia.visit(route('question-single'), { method: 'get', data: response.data });
}).catch(error=>{
this.question_button = false
console.log(error.response.data.errors)
if(error.response.data.errors){
this.title_errors = error.response.data.errors.title
this.body_errors = error.response.data.errors.body
}
})
},
您可以通过访问 The Official Inertiajs Website
来参考此内容