2

我试图在点击时重定向到另一个页面,由于某种原因它不起作用。这是我的 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="">按钮时,我被重定向到链接,但页面完全是空白的,当我点击另一个按钮时,它就像一个窗口一样打开,里面也是空白的。

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

4

1 回答 1

-2

链接

在 InertiaJS 中创建链接非常简单。它有一个自定义标签,表示它属于框架领域。

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

在底层有一个<a>标签,这也意味着传递的所有属性都将发送到该底层<a>标签。

重定向

如果您真正要寻找的只是一个简单的链接点击——而不是重定向本身——那么你对上面的代码没问题。

如果你对重定向感兴趣——例如在更新用户或类似的东西之后——那么只需Redirect像在任何其他 Laravel 应用程序中那样使用外观就足够了。

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 请求。

希望这可以帮助!

于 2019-11-19T07:19:27.883 回答