您可以添加窗體的HTML無論是在你的組件的諧音目錄,主題的部分目錄,或直接將其添加到任何網頁/佈局。這真的不要緊。
瞭解更多關於包括Partials
{% partial "contact-form.htm" %}
或者
{% partial __SELF__ ~ "::contact-form.htm" %} // reference to component's partial
月的AJAX框架需要使用的JavaScript API或數據屬性。它是好的,你是如何做的的例子,但忘記之前添加組件的名稱onSend處理器
data-request="SendEmails::onSend"
其中SendEmails
=部件名稱或別名在頁面上給出的,如果形式是在組件部分剛使用{{ __SELF__ }}::onSend
或使用JavaScript API,只是做:
$.request('onSend', {
data:{email:email, message:message, name:name},
success: function (data) {
//
},
error:function(e){
//
}
});
然後在組件處理請求創建一個功能onSend
:
<?php namespace AuthorName\PluginName\Components;
use Cms\Classes\ComponentBase;
use Mail;
use Url;
use Input;
use Request;
use Response;
use ApplicationException;
use Validator;
use ValidationException;
class SendEmails extends ComponentBase
{
public function onSend()
{
if (Request::ajax()) {
try {
$data = post();
// Quick Validation rules for E-mail, Name & Message
if (!array_key_exists('email', $data)) {
$data['email'] = post('email');
}
if (!array_key_exists('norad', $data)) {
$data['message'] = post('message');
}
if (!array_key_exists('name', $data)) {
$data['name'] = post('name');
}
$rules = [
'email' => 'required|email|between:6,255',
'name' => 'required|between:4,255'
//..
];
$validation = Validator::make($data, $rules);
if ($validation->fails()) {
throw new ValidationException($validation);
}
// Check if E-mail Template Exists @ "author.plugin::mail.templatename"
if (View::exists("author.plugin::mail.templatename")) {
Mail::send("author.plugin::mail.templatename", $data, function ($message) {
$message->from('[email protected]', 'Site Name');
$message->to($data['email'], $data['name']);
$message->subject('Subject here..');
});
// Handle Erros
if (count(Mail::failures()) > 0) {
echo "Failed to send Mail "; // Handle Failure
} else {
// Mail sent
echo "Mail Sent!"; // Handle Success
}
}
} catch (Exception $ex) {
throw $ex;
}
}
}
}
我不認爲這是一個好主意,只是發送一個表單插件。這是一項非常簡單的任務,因此您可以使用10月後端CMS部分添加代碼。 – 2015-04-02 20:21:21