【问题标题】:How do I get FormIt with ModX Revolution to redirect to a web page id (ie. www.myurl.com/index.php#contact)?如何使用 ModX Revolution 获取 FormIt 以重定向到网页 ID(即 www.myurl.com/index.php#contact)?
【发布时间】:2014-04-19 21:01:47
【问题描述】:

好的,所以问题是我创建了一个单页 html 网站,其中包含代表所有页面的多个部分。我遇到的问题是 FormIt 联系表格有效,但我无法让它重定向到正确的 ID。因此,一旦我提交表单,它就会带我回到页面顶部。有任何想法吗?在下面查看我的 FormIt 调用:

[[!FormIt?
    &hooks=`email`
    &emailFrom=`info@brickhousetitle.com`
    &emailTpl=`emailChunk`
    &emailTo=`[[+email]]`
    &redirectTo=`http://myurl/index.php#contact`
    &emailSubject=`BHT Website Inquiry`
    &validate=`name:required,
    email:email:required,
    comment:required:stripTags`
    &successMessage=`
    <div class="alert alert-success marginTop25">
        <button type="button" class="close" data-dismiss="alert">&times;</button>
        <h4>Thank you! Your inquiry has been submitted successfully.</h4>
    </div>
    `
    &validationErrorMessage=`
    <div class="alert alert-error">
        <button type="button" class="close" data-dismiss="alert">&times;</button>
        <ul>
            [[!+fi.error.name:!empty=`
            <li><a href="[[~[[*id]]]]#name">Name is a required field</a></li>
            `]]
            [[!+fi.error.email:!empty=`
            <li><a href="[[~[[*id]]]]#email">Email is a required field</a></li>
            `]]
            [[!+fi.error.comment:!empty=`
            <li><a href="[[~[[*id]]]]#comment">Comment is a required field</a></li>
            `]]
        </ul>
    </div>
    `
]]

[[!+fi.validation_error_message:!empty=`
    <div class="alert alert-error marginTop25">
        <button type="button" class="close" data-dismiss="alert">&times;</button>
        <ul>
            [[!+fi.error.name:!empty=`
            <li><a href="[[~[[*id]]]]#name">Name is a required field</a></li>
            `]]
            [[!+fi.error.email:!empty=`
            <li><a href="[[~[[*id]]]]#email">Email is a required field</a></li>
            `]]
            [[!+fi.error.comment:!empty=`
            <li><a href="[[~[[*id]]]]#comment">Comment is a required field</a></li>
            `]]
        </ul>
    </div>
`]]

[[!+fi.successMessage]]
<form action="[[~[[*id]]]]" method="post">
    <div class="[[!+fi.error.name:notempty=`control-group error`]]" id="name">
        <label for="name">Name:

            <div class="controls">
                <input type="text" name="name" value="[[!+fi.name]]" class="input-block-level">
            </div>
        </label>
    </div>

    <div class="[[!+fi.error.email:notempty=`control-group error`]]" id="email">
        <label for="email">Email:

            <div class="controls">
                <input type="text" name="email" value="[[!+fi.email]]" class="input-block-level">
            </div>
        </label>
    </div>

    <div class="[[!+fi.error.comment:notempty=`control-group error`]]" id="comment">
        <label for="comment">Comment: </label>

        <div class="controls">
            <textarea name="comment" cols="30" rows="10" value="[[!+fi.comment]]" class="input-block-level"></textarea>
        </div>
    </div>

    <input type="submit" value="Submit" class="btn btn-primary">
</form>

【问题讨论】:

    标签: jquery html forms modx-revolution formit


    【解决方案1】:

    您需要指定重定向挂钩,而且我认为 formit 不会使用 url,文档说您需要一个页面 id,如果您需要向 url 添加查询字符串,您可能必须编写一个使用 makeUrl 和/或 sendRedirect 的小 post hook。

    http://rtfm.modx.com/revolution/2.x/developing-in-modx/other-development-resources/class-reference/modx/modx.makeurl

    虽然你可能无法创建一个带有#contact位的网址......

    http://rtfm.modx.com/revolution/2.x/developing-in-modx/other-development-resources/class-reference/modx/modx.sendredirect

    类似:

    $url = 'http://myurl/index.php#contact';
    $modx->sendRedirect($url);
    

    【讨论】:

    • 首先,谢谢。其次,我尝试了您的建议,我相信它会奏效;但是,我什至无法让常规重定向仅使用一个数字。我已经像你说的那样将“重定向”添加到了钩子中,我根本无法让它重定向到另一个页面。我想一旦我弄清楚为什么这不起作用,带有 sn-p 的 customRedirect 钩子就可以了。感谢您为我指明正确的方向!
    【解决方案2】:

    http://rtfm.modx.com/extras/revo/formit/formit.hooks/formit.hooks.redirect - 这就是你需要的。只需将您的 sn-p 调用编辑为:

    &hooks=`email,redirect`
    &redirectTo=`http://myurl/index.php#contact`
    

    【讨论】:

    • 昨天试过了,但对我没有用。 redirectTo 参数只接受 id 数字(:
    • 怎么样:创建一个带有 url http://myurl/index.php#contact 的资源链接,并在 redirectTo 中指定此资源的 id。
    【解决方案3】:

    找到了答案。为了让 FormIT 插件返回到页面上的特定 id,我们只需在表单操作调用中包含 # 标记,如下所示:

    @Sean Kimball:感谢您昨天的帮助。

    【讨论】:

    • 看起来你的代码被剥离了——你可以添加它,因为它可能正是我需要的!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多