Как получить FormIt с ModX Revolution для перенаправления на идентификатор веб-страницы (например, www.myurl.com/index.php#contact)?
Итак, проблема в том, что я создал одностраничный HTML-сайт с несколькими разделами, которые представляют все страницы. Проблема, с которой я сталкиваюсь, заключается в том, что контактная форма FormIt работает, но я не могу заставить ее перенаправить на правильный идентификатор. Так что, как только я отправляю форму, она возвращает меня к началу страницы. Есть идеи? Проверьте мой вызов 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">×</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">×</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">×</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>
3 ответа
Нашел ответ. Чтобы заставить плагин FormIT возвращаться к определенному идентификатору на странице, мы просто должны включить тег # в вызов действия формы следующим образом:
@Sean Kimball: Спасибо за помощь вчера.
http://rtfm.modx.com/extras/revo/formit/formit.hooks/formit.hooks.redirect - это то, что вам нужно. Просто отредактируйте свой фрагмент кода на это:
&hooks=`email,redirect`
&redirectTo=`http://myurl/index.php#contact`
Вам нужно указать переадресацию переадресации, так как я не думаю, что formit будет принимать URL, в документах говорится, что вам нужен идентификатор страницы, который вам говорят, если вам нужно добавить строку запроса в URL, вам, возможно, придется написать небольшой почтовый хук, который использует makeUrl & / или sendRedirect.
Хотя вы не сможете создать URL с битом #contact на нем....
что-то вроде:
$url = 'http://myurl/index.php#contact';
$modx->sendRedirect($url);