11
تشکر

ایجاد فرم تماس با ما با استفاده از لاراول – بخش دوم

Laravel

Laravel

در بخش اول از این مطلب ما فرم تماس با ما را ایجاد کردیم و همچنین عملیات Validation را انجام دادیم، و همچنین به نکاتی مانند محلی کردن لاراول، برگشت داده‌ها و غیره اشاره کردیم.
همانطور گفتیم در این بخش ما میخواهیم اطلاعات گرفته شده از کاربر را درون دیتابیس ذخیره کنیم و همچنین یک ایمیل از اطلاعات وارد شده توسط کاربر به مدیر سایت ارسال کنیم.
در ادامه مطلب همراه ما باشید…

تنظیمات پایگاه داده

در ابتدا یک دیتابیس با نام laravel_test میسازیم. سپس توسط کوئری زیر یک جدول با نام contact_us میسازیم (این کوئری را میتوانید در بخش SQL از phpMyAdmin اجرا کنید).

CREATE TABLE IF NOT EXISTS <code>contact_us</code> (
  <code>id</code> int(11) NOT NULL AUTO_INCREMENT,
  <code>name</code> varchar(10) COLLATE utf8_persian_ci NOT NULL,
  <code>email</code> varchar(100) COLLATE utf8_persian_ci NOT NULL,
  <code>context</code> text COLLATE utf8_persian_ci NOT NULL,
  PRIMARY KEY (<code>id</code>)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=5 ;

حالا که پایگاه داده و جدول موردنظر ساخته شد به فایل database.php در مسیر app/config میرویم. در این فایل در آرایه mysql که درون آرایه connections است اطلاعات دیتابیس و نحوه ورود را مشخص میکنیم.

'mysql' => array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'laravel_test',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

اکنون لاراول به دیتابیس دسترسی دارد. در این مطلب برای کار با دیتابیس از Eloquent در لاراول استفاده میکنیم. برای اطلاعات بیشتر در این مورد، به مطلب Laravel: کار با Eloquent مراجعه کنید.

همانطور که میدانید در Eloquent برای هر جدول باید یک فایل درون پوشه app/models بسازیم. به همین دلیل یک فایل با نام Contact.php در این پوشه میسازیم و کدهای زیر را درون آن قرار میدهیم.

<?php

class Contact extends Eloquent {
  
  protected $table = 'contact_us';
  public $timestamps = false;

}
&#91;/php&#93;</div>

حالا براحتی میتوانیم برای دسترسی به جدول <span class="en-words">contact_us</span> از کلاس <span class="en-words">Contact</span> در هر جای برنامه استفاده کنیم.
<h2>ذخیره اطلاعات</h2>
در مطلب قبلی تا اینجا برنامه را پیش بردیم که اگر تمام اطلاعات وارد شده توسط کاربر درست بود مقدار <span class="en-words">true</span> را برمیگرداند (فایل <span class="en-words">routes.php</span> در مسیر <span class="en-words">app</span>).
<div class="mycode">[php]
$validator = Validator::make(Input::all(), $rules);
if($validator -> fails()) {
  return Redirect::back() -> withErrors($validator) -> withInput();
} else {
  return 'true';
}

خطی که مقدار true را برمیگرداند (خط 5)، پاک میکنیم و از این پس تمام کدهایی که مینویسیم را در این بخش به جای آن قرار میدهیم.
کار با Eloquent بسیار ساده است. توسط کدهای زیر اطلاعات وارد شده توسط کاربر را در جدول contact_us ذخیره میکنیم.

$contact = new Contact;
$contact -> name = Input::get('name');
$contact -> email = Input::get('email');
$contact -> context = Input::get('context');
$contact -> save();

ارسال ایمیل

پس از ذخیره اطلاعات وارد شده، میخواهیم یک ایمیل نیز که حاوی همین اطلاعات است به مدیریت سایت ارسال کنیم.
ابتدا باید تنظیمات ایمیل را درون لاراول درست کنیم. لاراول از روش‌های مختلف ارسال ایمیل مانند سرور SMTP یا sendmail و یا درایور معمول PHP با نام mail پشتیبانی میکند، که بستگی به انتخاب شما دارد. در استفاده های معمولی، استفاده از درایور معمول PHP با نام mail کفایت میکند.

برای تنظیم لاراول در استفاده از درایور mail یا هر گزینه دیگر به فایل mail.php در مسیر app/config میرویم.
در این فایل در گزینه driver نوع درایور را مشخص میکنیم. در صورتی که mail انتخاب شود ضرورتی به تنظیم گزینه های بعدی نیست. ما این گزینه را روی mail میگذاریم.

توجه کنید که در صورتی که در localhost برنامه را اجرا میکنید، امکان ارسال ایمیل وجود ندارد و احتمال دارد با خطای لاراول مواجه شوید.

گزینه ای دیگر در این فایل با نام from وجود دارد. در صورتی که میخواهید تمام آدرس‌ها و نام های ارسال شده از برنامه شما دارای یک آدرس و نام باشد این گزینه را پر کنید.

قبل از اینکه به فایل routes.php برگردیم، ابتدا یک فایل در مسیر app/views/emails با نام contact-us.blade.php میسازیم که این فایل همان محتوای ایمیل ارسالی است. درون این فایل کدهای زیر را قرار میدهیم.

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Email</title>
</head>
<body>
  <h1>تماس با ما</h1>
  <h2>ارسال ایمیل توسط: {{$name}}</h2>
  <h3>ایمیل کاربر: {{$email}}</h3>
  <p>{{$context}}</p>
</body>
</html>

حالا به فایل routes.php میرویم. در ادامه کدهایی که نوشتیم کد زیر را اضافه میکنیم.

$data = array(
  'name' => Input::get('name'),
  'email' => Input::get('email'),
  'context' => Input::get('context'),
);

Mail::send('emails.contact-us', $data, function($message) {
  $message->from('us@example.com', 'Laravel');

  $message->to('mohsen.sh12@hotmail.com') -> subject('Welcome!');
});

در بالا از متد send از کلاس Mail استفاده کردیم. اولین پارامتر آن اسم و مسیر فایلی است که در View ساختیم. دومین پارامتر آن آرایه ای از اطلاعات است که قرار است در فایل View از آن استفاده کنیم. آخرین پارامتر هم یک تابع است که درون آن اطلاعات فرستنده و گیرنده را مشخص میکنیم.

کلاس Mail دارای متدهای مختلفی است که از جمله آن میتوان به صف ها اشاره کرد، برای اطلاعات بیشتر میتوانید به سایت لاراول مراجعه کنید.

در انتها که کار به پایان میرسد، میتوانید به آدرسی دیگری تغییر مسیر بدهید (توجه کنید که مسیر را ابتدا ساخته باشید)

return Redirect::to('success');

و یا به همان صفحه قبل بازگردید.

return Redirect::back();

امیدوارم این دو مطلب، شروع خوبی برای کار با لاراول باشد.

این مطلب از سری مطالب، آموزش فریم ورک Laravel است
  • محمد علی می‌گه:

    سلام امیدوارم باشی زود راهنماییم کنی

    میخوام لاراول رو هاست نصب کنم
    نمی دونم دستورات migrate و … کجا باید وارد کنم دقیقا با shell هم کار نکردم تا حالا
    مرسی

  • علی حصاری می‌گه:

    ممنون جناب شفیعی
    ادامه آموزش ها کی منتشر میشه؟

  • سعید می‌گه:

    سلام
    اگه میشه راجع به پیاده‌سازی چند‌زبانگی در لاراول هم مطلبی تهیه کنید ممنون میشم.

  • محمد می‌گه:

    سلام خسته نباشید

    من قبلا ورد پرس کار میکردم ، یه مدتی هست که دارم لاراول کار میکنم

    میخوام یه فروشگاه ایجاد کنم با لاراول ، برای درگاه اساتید اگه راهنماییم کنید ممنون

    میشم :)

    میلم : m0hamm4d_elmi@yahoo.com

  • محمد جهانی می‌گه:

    ممنون محسن جان. مطلب خوبی بود. در رابطه با ایمیل، برای ارسالش بهتره که از صف یا همون queue در لاراول استفاده کرد. چون موقع ارسال ایمیل، سرور اجرای کد پی‌اچ‌پی منتظر دریافت پاسخ سرور میل (به عنوان مثال SMTP سرور) نمونه و نتیجه‌ی مورد نظر سریعاً به مرورگر یوزر برگرده. این مورد توی ارسال‌ها تعداد کمی بیشتر و خیلی بیشتر بسیار مهم‌تر هستش.

  • فرشاد می‌گه:

    گفتم این بار قبل از اینکه بخونم تشکر کنم !
    چون می دونم مثل همیشه گل کاشتی …..
    خسته نباشی و تشکر


  • نظرات این مطلب بسته است.