用惯性正确重定向到另一页?

时间:2019-10-22 18:48:19

标签: laravel vue.js element-ui inertia

由于某种原因,我试图将其重定向到另一个页面,这不起作用。这是我的Vue上的重定向按钮所在的代码。我尝试了两种不同的方法,但均不起作用。

<el-row class="import-btn">
    <a :href="'/imports/teachers'">
        <el-button type="warning">                                     Importar
        </el-button>
    </a>
</el-row>
<el-row class="import-btn">
    <el-button type="warning"                               
        @click="redirectStudents()">                                    Importar
    </el-button>
</el-row>
redirectStudents() {      
  this.$inertia.visit('/imports/students');
},

我有这样的web.php路由

Route::resource('imports/students', 'ImportStudentController');
Route::resource('imports/teachers', 'ImportTeacherController');

在两个控制器中,我目前都只填充了index()

public function index()
{
   return Inertia::render('Import/Students');
}
public function index()
{
    return Inertia::render('Import/Teachers');
}

在教师和学生的vue文件中,我具有这些页面的基本布局和标题,因此它们不为空。

当我单击<a :href="">按钮时,我将重定向到链接,但页面完全空白,而当我单击另一个按钮时,它打开时就像里面的一个窗口一样空白。

解决此问题的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

链接

在InertiaJS中创建链接非常简单。它具有一个自定义标记,以表示它属于框架的范围。

<inertia-link href="/">Home</inertia-link>

内部有一个<a>标签,这也意味着所有传递的属性都将发送到该基础<a>标签。

重定向

如果您真正要寻找的只是一个简单的链接单击操作-而不是重定向本身-那么使用上述代码就可以了。

如果您对重定向感兴趣,例如在更新用户或类似操作之后,则只需像在其他Laravel应用程序中那样使用Redirect门面就足够了。

class UsersController extends Controller
{
    public function store()
    {
        User::create(
            Request::validate([
                'name' => ['required', 'max:50'],
                'email' => ['required', 'max:50', 'email'],
            ])
        );

        return Redirect::route('users');
    }
}

如果您已经安装了InertiaJS laravel适配器包,那么此重定向将返回303状态码,该状态码与302状态码相同,只是将请求更改为GET请求。

希望这会有所帮助!