3

我想在创建问题后被重定向到单个问题页面

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
        }


    })
},

我有这个功能我想要在请求成功后重定向我一个水疗方式而不需要重新加载页面来质疑单个页面我正在使用惯性 js 和 jetstream 我的 laravel 路由器在下面

Route::middleware(['auth:sanctum', 'verified'])->get('/question/{question}', 'App\Http\Controllers\QuestionController@show')->name('question-single');
4

2 回答 2

4

只需在惯性上使用访问方法,如下所示。

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
    }


})

},

您可以通过访问Inertiajs 官方网站来参考这一点

于 2021-09-16T04:27:45.253 回答
0

如果您使用 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');
    }
}
于 2021-01-14T10:48:39.360 回答