۱۰ مورد از برترین پرسش و پاسخ‌ها برای توسعه دهندگان جدید لاراول

ترجمه و تالیف : فاطمه شیرزادفر
تاریخ انتشار : 14 شهریور 99
خواندن در 2 دقیقه
دسته بندی ها : لاراول

فریمورک لاراول محبوب‌ترین فریمورک php، در جامعه فعلی php است؛ و به دلیل محبوبیت آن توسعه دهندگان جدید php با فریمورک لاراول درگیر می‌شوند. هر توسعه دهنده جدید لاراول تعداد زیادی سؤال "چگونه … ؟" درباره این فریمورک دارد، و من قصد دارم در این مقاله از راکت درباره ۱۰ مورد از برترین سؤالاتی که پرسیده شده بحث کنم و به آن‌ها جواب دهم. اگر به تازگی به این فریمورک آمده‌اید، قطعاً پاسخ این سؤالات به شما کمک خواهد کرد. 

۱. چگونه می‌توان یک کوئری خام را در لاراول اجرا کرد؟

پاسخ: لاراول به شما Eloquent model و query builder را برای اجرای کوئری‌های پایگاه داده پیشنهاد می‌کند، اما گاهی اوقات نیاز به اجرای یک کوئری خام داریم چرا که این امر باعث راحتی بیشتر ما نسبت به تبدیل آن کوئری‌های خام به Eloquent query یا query builder می‌شود. برای اجرای یک کوئری خام در لاراول، می‌توانید از مثال زیر استفاده کنید.

$sql = "select * from users u left join subscriptions s on u.id=s.user_id where s.subs_type='premium'";

$result = \DB::select($sql);

توجه : این مثال یک کوئری خام ساده است که به راحتی به eloquent query یا query builder تبدیل می‌شود اما کوئری خام واقعی می‌تواند پیچیده‌تر یا بزرگ‌تر از آن باشد.

۲. چگونه می‌توان از اسم یک جدول custom (سفارشی) در eloquent model استفاده کرد؟

پاسخ: اگر نام eloquent model ما Post باشد، لاراول یک جدول در postهای پایگاه‌داده ما پیدا خواهد کرد( که اسم جمع آن‌ها،‌نام مدل ماست) اما گاهی اوقات به دلایل امنیتی یا استراتژی توسعه‌ خود، باید نام جدول خود را با پیشوند یا چیزی شبیه به آن تغییر دهیم. در این زمان به راحتی می‌توانیم نام جدول خود را در eloquent model قرار دهیم تا لازم نباشد نام مدل خود را طبق نام مدلمان تغییر دهیم. این مثال را در زیر مشاهد کنید:

// model name Post and table name lp_post

<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
   protected $table = 'lp_post';
} 

۳. چگونه created_at و created_at یک فیلد را غیرفعال کنیم؟

پاسخ: لاراول به طور پیش‌فرض به دنبال دو ستون در هر جدول است که created_at و updated_at هستند. اگر این فیلدها در جدول ما موجود نباشند، لاراول هنگام وارد کردن داده یا بروزرسانی خطایی ایجاد می‌کند. اگر در جدول مشخصی به این فیلدها نیازی نداشته باشیم می‌توانیم به لاراول بگوییم که این دوفیلد را نادیده بگیرد. بیایید مثال زیر را بررسی کنیم.

<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
   public $timestamps = false;
} 

۴.چگونه public را از URL حذف کنیم؟

پاسخ: برای حذف کردن کلمه public از URL، مراحل زیر را دنبال کنید.

۱. فایل index.php را از دایرکتوری public به دایرکتوری روت انتقال دهید.

۲.حالا فایل  index.php را باز کنید و این خط را  ; ' require __DIR__ . '/../bootstrap/autoload.php با این  ; 'require __DIR__ . '/bootstrap/autoload.php و $app = require_once __DIR__ . '/../bootstrap/app.php'; با $app = require_once __DIR__ . '/bootstrap/app.php'; جایگزین کنید.

۳. ذخیره کنید و تمام شد! هر بار کهCSS ، Js یا عکسی می‌خواهید، باید کلمه public را در asset helper function خود اضافه کنید. مثال : asset('public/css/style.css')

۵. چگونه CSRF token را در route های خاص غیرفعال کنیم؟

به دلایل امنیتی لاراول برای هر درخواست POST حتماً CSRF ( Cross-Origin Resource Forgery) را چک می‌کند. اگر می‌خواهید CSRF token را برای routeهای خاص غیرفعال کنید، مراحل زیر را دنبال کنید.

۱. فایل app\Http\Middleware\VerifyCsrfToken.php را باز کنید.

۲.اکنون مسیر route که می‌خواهید برای چک کردن CSRF token در لیست سفید قرار دهید، درprotected $except = [ ] اضافه کنید.

<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{

    protected $addHttpCookie = true;
    protected $except = [
        '/admin/products/autocomplete',
        '/admin/services/*'
    ];
}

۶. چگونه می‌توان داده‌ها را توسط jQuery Ajax وارد کرد؟

پاسخ: برای ارسال ریکوئست ajax post برای ذخیره داده، آپدیت داده یا حذف آن؛ ما نیاز به ارسال فیلد_token برای تائید اعتبار CSRF token نیز، داریم. به مثال توجه کنید.

در  نشانه گذاری HTML، باید نام فیلد پنهان را با_token اضافه کنیم.

<input type="hidden" name="_token" value="{{csrf_token()}}">

or use only CSRF blade directive

@csrf

در بخش جاوااسکریپت:

$(function(){

	 $('#form').submit(function(e){
	 	e.preventDefault();

	 	var _url = $(this).attr('action'),
	 		_type = 'POST',
	 		_data = $(this).serialize();

	 	$.ajax({
		    url: _url,
		    type: _type,
		    data: _data,
		    success: function (data) { 
		        // do something after success
		    }
		});

	 })

});

۷. چگونه می‌توان عکس/فایل در لاراول بارگذاری کرد؟

پاسخ: برای بارگذاری یک عکس یا فایل مثال زیر را دنبال کنید. برای آپلود کردن به صورت ajax می‌توانید این مقاله را در رابطه با آموزش آپلود عکس در لاراول به شکل Ajax بخوانید.

HTML

<input type="file" name="photo">

در controller

$photo = $request->file('photo');
if ($request->hasFile('photo')) {
    $fileName = time() . "." . $photo->getClientOriginalExtension();
    $request->file('photo')->move(public_path('/photos'), $fileName);
    
    // after upload finished you can save the filename in the database
    
}

۸.چگونه یک برنامه CRUD در لاراول بسازیم؟

پاسخ: برای یک توسعه دهنده جدید لاراول، ایجاد یک برنامه CRUD تمرین خوبی است. برای این کار می‌توانید از آموزش‌های لاراول درون سایت راکت استفاده کنید. 

۹.چگونه می‌توان احرازهویت انجام داد و ثبت‌نام را در لاراول غیرفعال کرد؟

پاسخ:برای احراز هویت،مقاله آموزش احرازهویت را مطالعه کنید. اگر در برنامه خود به سیستم ثبت‌نام نیازی ندارید، مراحل زیر را برای غیرفعال کردن سیستم ثبت‌نام در برنامه لاراولی خود دنبال کنید.

۱. فایل route خود web.php را باز کنید و روت Auth::routes(); را پیدا کنید.

۲. درauth route های خودregister را برابر false قرار دهید. Auth::routes(['register' => false]);

۳. انجام شد!

۱۰.چگونه یک پروژه لاراول را در هاست اشتراکی cPanel توسعه دهیم؟

پاسخ: برای خواندن آموزش گام به گام توسعه برنامه لاراول در هاست اشتراکی cPanel می‌توانید از این پست استفاده کنید. 

امیدوارم این مقاله به شما کمک کند تا جواب سؤالات خود را به عنوان یک توسعه دهنده جدید لاراول گرفته باشید، اگر این مقاله برای شما مفید بود می‌توانید آن را با دوستان خود نیز به اشتراک بگذارید تا به آن‌ها هم کمک شود. از وقتی که برای مطالعه گذاشتید، ممنونم.

منبع

گردآوری و تالیف فاطمه شیرزادفر
آفلاین
user-avatar

تجربه کلمه‌ای هست که همه برای توصیف اشتباهاتشون ازش استفاده میکنن، و من همیشه دنبال اشتباهات جدیدم! برنامه‌نویس هستم و لینوکس‌ دوست

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید