Contact Us Package¶
Most website’s include a contact form. The contact us packages allows these enquires to be stored in the backend.
Installation¶
Install the package via composer¶
composer require dms-org/package.contact-us
Register the package in app/AppCms.php
¶
<?php declare(strict_types = 1);
namespace App;
use Dms\Core\Cms;
use Dms\Core\CmsDefinition;
use Dms\Package\ContactUs\Cms\ContactUsPackage;
/**
* The application's cms.
*
* @author Elliot Levin <elliotlevin@hotmail.com>
*/
class AppCms extends Cms
{
/**
* Defines the structure and installed packages of the cms.
*
* @param CmsDefinition $cms
*
* @return void
*/
protected function define(CmsDefinition $cms)
{
$cms->packages([
// Add this line to register the package...
'contact-us' => ContactUsPackage::class,
]);
}
}
Register the ORM in app/AppOrm.php
¶
<?php declare(strict_types = 1);
namespace App;
use Dms\Core\Persistence\Db\Mapping\Definition\Orm\OrmDefinition;
use Dms\Core\Persistence\Db\Mapping\Orm;
use Dms\Package\ContactUs\Persistence\ContactUsOrm;
/**
* The application's orm.
*
* @author Elliot Levin <elliotlevin@hotmail.com>
*/
class AppOrm extends Orm
{
/**
* Defines the object mappers registered in the orm.
*
* @param OrmDefinition $orm
*
* @return void
*/
protected function define(OrmDefinition $orm)
{
// Add this line to register the mappers
$orm->encompass(new ContactUsOrm());
}
}
Usage¶
Sample contact form¶
<form action="..." method="post">
{!! csrf_field() !!}
<div class="form-group">
<label>Your Name</label>
<input type="text" class="form-control" required name="name">
</div>
<div class="form-group">
<label>Email</label>
<input type="email" class="form-control" required name="email">
</div>
<div class="form-group">
<label>Subject</label>
<input type="text" class="form-control" required name="subject">
</div>
<div class="form-group">
<label>Your Message</label>
<textarea name="message" class="form-control" required></textarea>
</div>
<button type="submit" class="btn btn-primary">Submit Enquiry</button>
</form>
Record contact enquiry and send notification¶
<?php declare(strict_types = 1);
namespace App\Http\Controllers;
use Dms\Package\ContactUs\Core\ContactEnquiry;
use Dms\Package\ContactUs\Core\ContactEnquiryService;
use Illuminate\Http\Request;
use Illuminate\Mail\Message;
/**
* @author Elliot Levin <elliotlevin@hotmail.com>
*/
class ContactController extends Controller
{
public function submitEnquiry(Request $request, ContactEnquiryService $contactEnquiryService)
{
$this->validate($request, [
'name' => 'required',
'email' => 'required|email',
'subject' => 'required',
'message' => 'required',
]);
$contactEnquiryService->recordEnquiry(
$request->input('email'),
$request->input('name'),
$request->input('subject'),
$request->input('message'),
function (ContactEnquiry $enquiry) {
// Send the notification email...
}
);
return redirect('contact/success');
}
}