Как использовать PHP в GWT

это как говорится в заголовке

Прежде всего, я хотел бы извиниться, если это глупый вопрос = [

так что в основном я пытаюсь отправить письмо через gwt. Я понятия не имею, как работает gwt mail, поэтому вместо этого я попытался использовать php way (что мне более знакомо), но я понятия не имею, как заставить это работать.

Итак … в моей папке war у меня есть мои index.html и email.php, которые я создал. В моем index.html у меня есть форма, которая вызывает мой email.php.

<?php
// Check for empty fields
if(empty($_POST['name'])        ||
empty($_POST['email'])       ||
empty($_POST['message']) ||
!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
{
echo "did you make sure to fill everything?";
return false;
}$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

// Create the email and send the message
$to = '[email protected]'; // Add your email address inbetween the ''           replacing [email protected] - This is where the form will send a message to.
$email_subject = "Website Contact Form:  $name";
$email_body = "You have received a new message from your website contact form.\n\n"."Here are the details:\n\nName: $name\n\nEmail: $email\n\n Message:\n$message";
$headers = "From: [email protected]\n"; // This is the email     address the generated message will be from. We recommend using something like [email protected].
$headers .= "Reply-To: $email_address";
mail($to,$email_subject,$email_body,$headers);
return true;
?>

выше мой php код, который я сейчас использую. Однако не только eclipse не распознает php, но и когда я нажимаю кнопку, он только печатает этот код и не запускает его.

Это случается с кем-нибудь, и кто-нибудь может мне помочь?

Спасибо =]

0

Решение

Что ты можешь сделать:

  • Создайте заново форму электронной почты в GWT с помощью FormPanel или
  • создать свой собственный POST-запрос в GWT с RequestBuilder

В обоих случаях: операторы ‘echo’, которые возвращает форма PHP, будут не быть добавленным к странице HTML, но возвращенным вам в виде строки. Вам придется решить, что делать (указать пользователю? Предпринять другие действия) в своем коде GWT.

Восстановить как панель формы:

// create the textboxes of the form with their proper form names
TextBox tbName = new TextBox();
tbName.setName( "name" );
TextBox tbEmail = new TextBox();
tbEmail.setName( "email" );
TextBox tbMessage = new TextBox();
tbMessage.setName( "message" );

// create the form panel
final FormPanel emailFormPanel = new FormPanel();
// TODO: add the form panel to some kind of parent widget / ui object
emailFormPanel.setAction( "/contextRoot/path/to/email.php" );
emailFormPanel.setMethod( "POST" );

// add the textboxes to the form panel
emailFormPanel.add( tbName );
emailFormPanel.add( tbEmail );
emailFormPanel.add( tbMessage );

// create the form submit button
Button btnSubmit = new Button( "Submit", new ClickHandler() {

@Override
public void onClick(ClickEvent event) {
emailFormPanel.submit();
}

} );

// create the formpanel handler for a successful submit
// any error message ("did you forget to ...") will be returned here
emailFormPanel.addSubmitCompleteHandler( new SubmitCompleteHandler() {

@Override
public void onSubmitComplete(SubmitCompleteEvent event) {

String errorString = event.getResults();
// TODO: decide what to do with a potential non-empty string
}
} );

Создайте свой собственный POST-запрос с RequestBuilder:

// create the textboxes of the form with their proper form names
final TextBox tbName = new TextBox();
final TextBox tbEmail = new TextBox();
final TextBox tbMessage = new TextBox();

// create the form submit button
Button btnSubmit = new Button( "Submit", new ClickHandler() {

@Override
public void onClick(ClickEvent event) {
submitEmailFormRequestBuilder( tbName, tbEmail, tbMessage );

}

} );
// TODO: add textboxes and Submit-Button to the DOM-tree

отправить значения текстового поля:

protected void submitEmailFormRequestBuilder(TextBox name, TextBox email, TextBox message) {

// create the request content in a way that the php script can read it:
// for every textbox the php textbox-name = user-value
StringBuilder requestData = new StringBuilder();
requestData.append( "name=" + name.getValue() );
requestData.append( "&email=" + email.getValue() );
requestData.append( "&message=" + message.getValue() );

// create the REST request callback
RequestCallback callback = new RequestCallback() {

@Override
public void onResponseReceived(Request request, Response response) {
String errorMessage = response.getText();

// TODO: handle potential error-message

}

@Override
public void onError(Request request, Throwable exception) {
// TODO: handle timeouts and other sending failures like cross-domain posting

}
};

// create the REST request as POST request
RequestBuilder build = new RequestBuilder( RequestBuilder.POST, "/contextRoot/email.php" );
try {
build.sendRequest( requestData.toString(), callback );
}
catch (RequestException e) {
// handle exception
}
}

В противном случае, если index.html не является стартовой страницей GWT, где вызывается модуль .nocache.js, вы можете включить его в свой код GWT с помощью IFrame.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]