首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有一种方法可以重定向十月CMS中的GET参数?

有没有一种方法可以重定向十月CMS中的GET参数?
EN

Stack Overflow用户
提问于 2019-09-08 15:45:05
回答 1查看 1.7K关注 0票数 0

我有一个组件,它有一个Ajax处理程序。在这个处理程序的末尾,我想将用户重定向到一个带有GET参数的页面。

示例:

  • 用户访问网页: www.example.com/hello
  • 他用Ajax ()点击按钮
  • 用户浏览器被重定向到www.example.com/重定向?id=1

在中,一些代码将返回来自REST的ID。相同的Handler也知道要重定向到的页面(可以在后端设置中设置)。我试图在十月的CMS文档中找到一些东西。我唯一找到的是重定向类,它可以重定向到给定的页面,但是我找不到一种方法来设置GET查询参数

代码语言:javascript
运行
复制
<form id="sample-form" data-request-validate data-request="onOrder">
    <input type="hidden" name="sample" value="{{ sample.id }}" />
    <button type="submit">Get Sample</button>
</form>

AJAX Handler

代码语言:javascript
运行
复制
public function onOrder() {
    $sample = Sample::findOrFail(input('sample'));
    // API Call returns ID $id
    return Redirect::to(Settings::get('redirectUrl')->with('id',$id);
}

我希望通过GET查询将用户重定向到给定的Url

有谁知道如何让这件事成功吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-09 18:48:56

我在组件页面顶部使用Input;服务。现在,在我看来,最好使用尽可能少的AJAX。为了执行完整的页面重定向,我建议使用一个简单的HTML表单,但是使用TWIG打开它。

所以我的麻烦枪击案提示。用{{ form_open({request: __SELF__~"::onOrder", id: "sample-form"}) }}创建表单;不要忘记{{ form_close() }}的结尾。这将生成一个非ajax表单,但对于解决问题很有用。请注意__SELF__~"::onOrder",它用于指定特定组件的处理程序。如果有许多具有相同onOrder处理程序和良好实践的组件,则这一点非常重要。

现在,您将在Component.php onOrder处理程序中注意到,当您取消注释这一行并运行您希望传递的$id时,您将看到//dd(Input::get('sample'))。如果它是正确的,然后移动模具和转储命令进一步向下的函数。

检查是否检索到$sample。您可以只使用Sample::where('id', $id);如果没有找到,我相信这将返回null,但如果找到,则可以使用$sample->first(),因为where返回集合。

构建重定向是很容易的return Redirect::to(Settings::get('redirectUrl').'?id='.$id);。在这里,我把'?id='.$id连接在url的末尾。包含一个->with()只是意味着您正在闪烁一条消息,如‘->with’(‘success’,‘感谢您的订单’);您可以通过会话检索此消息。

如果您认为必须使用Ajax并完全回答您的问题,我确实包括了{{ form_ajax(__SELF__~"::onOrder", {id: "sample-form"}) }}。我对此进行了测试,尽管不是确切的情况,而且一切都在为我工作。

代码语言:javascript
运行
复制
    <?php namespace Author\Plugin\Components;

    use Input;
    use Author\Plugin\Models\Sample;


    class Something extends \Cms\Classes\ComponentBase
    {
        public function componentDetails()
        {
            return [
                'name' => 'Somthing',
                'description' => 'Something'
            ];
        }
        public function onOrder() {
            //dd(Input::get('sample'));
            $id = Input::get('sample');
            $sample = Sample::where('id', $id);
            //dd($sample);
            // API Call returns ID $id
            if ($sample != null) {
            return Redirect::to(Settings::get('redirectUrl').'?id='.$id);
            }
        }
    }
    {{ form_ajax(__SELF__~"::onOrder", {id: "sample-form"}) }}
        <input type="hidden" name="sample" value="{{ sample.id }}" />
        <button type="submit">Get Sample</button>
    {{ form_close() }}

    {{ form_open({request: __SELF__~"::onOrder", id: "sample-form"}) }}
        <input type="hidden" name="sample" value="{{ sample.id }}" />
        <button type="submit">Get Sample</button>
    {{ form_close() }}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57843396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档