2

好的,所以问题是我创建了一个单页 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>
4

3 回答 3

1

http://rtfm.modx.com/extras/revo/formit/formit.hooks/formit.hooks.redirect - 这就是你所需要的。只需编辑您的代码片段调用即可:

&hooks=`email,redirect`
&redirectTo=`http://myurl/index.php#contact`
于 2014-04-20T09:49:34.513 回答
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);
于 2014-04-19T21:53:33.610 回答
0

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

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

于 2014-04-20T20:14:08.490 回答