مشاهده دست آورد نظرسنجی: آیا از این آموزش رضایت دارید؟

رای دهنده
83. شما نمی توانید در این رای گیری رای بدهید
  • بلی

    79 95.18%
  • خیر

    4 4.82%
صفحه 2 از 3 اولاول 123 آخرآخر
نمایش نتایج 41 تا 80 از 106

نام تاپیک: آموزش Laravel 5

  1. #41

    نقل قول: آموزش Laravel 5

    آقا خسته نباشی ، فیلم لاراول در قالب پروژه رو اگه آماده کنی و بذاری خیلی خیلی ممنون میشم

  2. #42
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    نقل قول نوشته شده توسط behvandi مشاهده تاپیک
    آقا خسته نباشی ، فیلم لاراول در قالب پروژه رو اگه آماده کنی و بذاری خیلی خیلی ممنون میشم
    انشالله تا یکی دوماه آینده سعی مکینم آماده کنم و لینک آن را در همین جا قرار میدم

  3. #43
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    افزودن کلاس و پکیج به لاراول ۵

    ممکن است شما کلاسی رو خودتون نوشته باشید و قصد دارین از اون توی فریمورک لاراول استفاده کنید. توی لاراول ۵ به راحتی میتونید از کلاستون استفاده کنید. یک پوشه توی پوشه app به نام Classes ایجاد میکنیم و یک فایل مثلا به نام Common.php ایجاد میکنیم و کلاس Common رو داخلش تعریف میکنیم :

    <?php namespace App\Classes;

    class Common
    {

    public static function pre($array)
    {
    echo '<pre>' . print_r($array, true) . '</pre>';
    }




    همانطور که مشاهده میکنید ایتدا یک namespace برای کلاس تعریف کردم و برای مثال داخل کلاس متدی استاتیک به نام pre تعریف کردم. حالا هرجای پروژه به راحتی می تونید به این صورت با این متد کار کنید :
    $cars = ['volvo', 'toyota', 'bmw'];
    \App\Classes\Common::pre($cars);


    یا مثلا در کنترلر بهتره اونو use کنیم و اینجوری استفاده کنیم :

    use App\Classes\Common;

    class SiteController extends Controller
    {
    public function index()
    {
    $cars = ['volvo', 'toyota', 'bmw'];
    return Common::pre($cars);
    }
    //××××××××××××××××××××××××× ××××


    افزودن پکیج به لاراول
    برای لاراول پکیج های زیادی نوشته میشه که شما میتونید با مراجعه به این آدرس پکیج مورد نظرتون سرچ کنید و اونو معمولا با composer به فریمورک اضافه کنید:
    http://packalyst.com/

    مثلا یکی از پکیج های خوبش اینه که کار با تصویر رو براتون آسون میکنه http://packalyst.com/packages/packag...rvention/image
    یا پکیج debug-bar لاراول که خیلی کاربردیه http://packalyst.com/packages/packag...ravel-debugbar

  4. #44

    نقل قول: آموزش Laravel 5

    چجوری میشه پکیج ساخت و منتشرش کرد؟

  5. #45
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    نقل قول نوشته شده توسط imohammad مشاهده تاپیک
    چجوری میشه پکیج ساخت و منتشرش کرد؟
    اینجارو بخونید
    http://prosperotemuyiwa.com/2015/05/...vel-5-package/
    آخرین ویرایش به وسیله hamedarian2009 : پنج شنبه 24 اردیبهشت 1394 در 23:23 عصر دلیل: قرار دادن لینک جدید

  6. #46

    نقل قول: آموزش Laravel 5

    خیلی عالی استاد
    من می خوام یه برنامه سمپل ساده بنویسم به عنوان تمرین
    که سایت 2 زبانه پیاده کنم
    تمرینی که تو ذهنمه اینه
    یه سایت داریم که تو جدول دیتابیسش
    فیلدهای زیرو داریم
    1-id
    2-titel_fa
    3-titel_en
    4-bodyNews_fa
    5-bodyNews_en
    میخوام اطلاعات و تویه یک صفحه نشون بدم و 2تا لینک بزارم(برای تعین زبان) بازدن لینکها همون صفحه منوها و چیزهای ثابت سایت فارسی بشه و اطلاعات خونده شده از دیتا بیس هم به اون زبان در بیاد
    میشه این تمرینو انجام بدید چون شنیدم دو زبانه کردن تویه لارول خیلی خوبه
    من سعی میکنم انجامش بدم

  7. #47
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    بله چند زبانه کردن در لاراول خیلی ساده است و سعی میکنم فردا آموزشی در این زمنیه بزارم
    آموزش ها دیگه تموم شده و ازین ببعد با توجه به پرسش های دوستان مطالبی رو تهیه و در این تاپیک قرار میدهم اگر هم دوستانی از بخش های قبلی بخشی را متوجه نشدن مطرح کنند تا بیشتر توضیح بدم به بقیه دوستان هم پیشنهاد میکنم یک پروژه تمرینی ساده رو انجام بدن چون تمرین است که باعث یادگیری خواهد شد نه فقط خواندن آموزشها

  8. #48
    کاربر دائمی
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    شوش
    پست
    123

    نقل قول: آموزش Laravel 5

    سلام اگه میشه نقش های کاربری رو بیشتر توضیح بدید ؟مثلا علاوه بر guest ,manager چند نوع کاربر دیگه هم داشته باشیم چطر از اکستنشن یا وخودمون انجام بدیم؟ چه راه و روشی پیشنهاد میکنید؟خودتون چی استفاده میکنید؟

  9. #49
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    چند زبانه کردن برنامه

    به طور پیش فرض در مسیر resources/lang یک پوشه به نام en وجود دارد که فایل های زبانی انگلیسی در آن قرار دارند. برای چند زبانی کردن کافی است به ازای هرتعداد زبان یک پوشه ایجاد کرده و دقیقا فایل های موجود در پوشه en را در آن هم کپی کنیم. هر فایل زبانی یک آرایه را return میکند که اندیس ها در همه فایل ها باید به انگلیسی باشند اما مقادیر آنها باتوجه زبان موردنظر مقداردهی می شوند. ما در این مثال قصد داریم یک برنامه ساده دوزبانه فارسی و انگلیسی را پیاده سازی کنیم پس با من همراه باشید.
    ابتدا دوتا پوشه fa و en در پوشه resources/lang ایجاد کنید و فایل messages.php را ایجاد کنید به این صورت :

    /resources
    /lang
    /en
    messages.php
    /fa
    messages.php

    محتویات فایل های messages.php را هم به این صورت تغییر دهید :

    //برای فایل انگلیسی
    <?php

    return [
    'welcome' => 'Welcome to our application',
    'text' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
    quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
    consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
    cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
    proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
    ];

    //برای فایل فارسی

    return [
    'welcome' => 'به برنامه ما خوش آمدید',
    'text' => '

    لورم ایپسوم یا طرح‌نما (به انگلیسی: Lorem ipsum) به متنی آزمایشی و بی‌معنی در صنعت چاپ، صفحه‌آرایی
    و طراحی گرافیک گفته می‌شود. طراح گرافیک از این متن به عنوان عنصری از ترکیب بندی برای پر کردن صفحه
    و ارایه اولیه شکل ظاهری و کلی طرح سفارش گرفته شده استفاده می نماید، تا از نظر گرافیکی نشانگر
    چگونگی نوع و اندازه فونت و ظاهر متن باشد. معمولا طراحان گرافیک برای صفحه‌آرایی، نخست از متن‌های
    آزمایشی و بی‌معنی استفاده می‌کنند تا صرفا به مشتری یا صاحب کار خود نشان دهند که صفحه طراحی یا
    صفحه بندی شده بعد از اینکه متن در آن قرار گیرد چگونه به نظر می‌رسد و قلم‌ها و اندازه‌بندی‌ها
    چگونه در نظر گرفته شده‌است. از آنجایی که طراحان عموما نویسنده متن نیستند و وظیفه رعایت حق
    تکثیر متون را ندارند و در همان حال کار آنها به نوعی وابسته به متن می‌باشد آنها با استفاده
    از محتویات ساختگی، صفحه گرافیکی خود را صفحه‌آرایی می‌کنند تا مرحله طراحی و صفحه‌بندی را به
    پایان برند.',
    ];

    حالا یک فایل view به نام test.blade.php هم ایجاد کنید و کدهای زیر را در آن قرار دهید :

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Multi Languages-Hamo</title>
    </head>
    <body>

    <a href="{{ url('/language') }}">{{ Session::get('locale', 'fa') == 'fa' ? 'English' : 'فارسی' }}</a>
    <h1>{{ trans('messages.welcome') }}</h1>
    <p>{{ trans('messages.text') }}</p>

    </body>
    </html>

    با استفاده از تابع کمکی trans متن موردنظرمان را چاپ میکنیم. مقداری که این تابع میگرد به این صورت است که ابتدا نام فایل بعد یک نقطه و سپس اندیس آرایه را به آن میدهیم و مقدار ان براساس locale برنامه چاپ می شود مثلا اگر زبان برنامه fa باشد welcome و text فارسی وگرنه انگلیسی نمایش داده خواهد شد. یک لینک هم برای تغییر زبان تعریف کردم که با یک سشن به نام locale که جلوتر تعریف میکنیم زبان جاری را در آن قرار می دهیم و مقدار لینک بر اساس نوع زبان جاری تعیین می شود مثلا اگر زبان فارسی بود لینک زبان انگلیسی نمایش داده می شود و بالعکس این لینک را میتوانید در منوی وبسایت و در قالب اصلی آن قراردهید که بستگی به سلیقه خودتان دارد. این لینک به مسیر language هدایت میشود پس مسیر را در فایل routes.php تعریف میکنیم :

    //language
    Route::get('/language', 'WelcomeController@language');

    مسیر را به کنترلر WelcomeController و اکشن language ارسال کردیم. پس اکشن language را در کلاس کنترلر موردنظر ایجاد میکنیم :

    public function language(ChangeLocaleCommand $ChangeLocaleCommand)
    {
    $this->dispatch($ChangeLocaleCommand);
    return redirect()->back();
    }


    همانطور که می بینید از یک کلاس command استفاده کردیم که در این کلاس نوع زبان را در سشن تغییر می دهیم. یادتان باشد برای استفاده از هرکلاسی در کنترلر باید ابتدا آن را با namespace آن ایمپورت کنید پس ایتدای کلاس این عبارت را ااضفه کنید :

    use App\Commands\ChangeLocaleCommand;

    اکنون با دستور زیر کلاس ChangeLocaleCommand را ایجاد کنید :

    php artisan make:command ChangeLocaleCommand


    در مسیر app/commands کلاس ایجاد شده را باز کنید و متد handle را به این صورت تغییر دهید :

    <?php namespace App\Commands;

    use App\Commands\Command;

    use Illuminate\Contracts\Bus\SelfHandling;

    class ChangeLocaleCommand extends Command implements SelfHandling {

    /**
    * Execute the command.
    *
    * @return void
    */
    public function handle()
    {
    session()->set('locale', session('locale') == 'fa' ? 'en' : 'fa');
    }

    }


    همانطور که می بینید در کلاس بالا مقدار سشن اگر fa بود به en یا بالعکس تغییر میدهیم.

    حالا باید یک کلاس command دیگر برای ست کردن locale برنامه ایجاد کنیم پس با دستور زیر آن را ایجاد میکنیم :

    php artisan make:command SetLocaleCommand

    حالا فایل آن را بازکنید و به این صورت تغییر دهید :

    <?php namespace App\Commands;

    use App\Commands\Command;
    use Request;
    use Illuminate\Contracts\Bus\SelfHandling;

    class SetLocaleCommand extends Command implements SelfHandling {

    /**
    * The availables languages.
    *
    * @array $languages
    */
    protected $languages = ['en','fa'];

    /**
    * Execute the command.
    *
    * @return void
    */
    public function handle()
    {
    if(!session()->has('locale'))
    {
    session()->put('locale', Request::getPreferredLanguage($this->languages));
    }

    app()->setLocale(session('locale'));
    }

    }



    همانطور که مشاهده میکنید در کلاس بالا locale برنامه را با توجه مقدار سشن تغییر می دهیم اگر مقدار سشن fa بود پس locale برنامه هم fa و یا بالعکس شود. در صورتی که سشن ست نشده بود با استفاده از متد getPreferredLanguage و پراپرتی languages که زبان های موردنظرمان را در ان ست کردیم آن را مقداردهی میکنیم.

    حالا بایستی از این کلاس command استفاده کنیم پس یک middleware هم در مسیر app/Http/Middleware به نام App ایجاد میکنیم با دستور زیر :
    php artisan make:middleware App


    فایل آن را باز کنید و به این صورت تغییر دهید :

    <?php namespace App\Http\Middleware;

    use Closure;

    use App\Commands\SetLocaleCommand;

    use Illuminate\Bus\Dispatcher as BusDispatcher;

    class App {

    /**
    * The command bus.
    *
    * @array $bus
    */
    protected $bus;

    /**
    * The command bus.
    *
    * @array $bus
    */
    protected $setLocaleCommand;

    /**
    * Create a new App instance.
    *
    * @param Illuminate\Bus\Dispatcher $bus
    * @param App\Commands\SetLocaleCommand $setLocaleCommand
    * @return void
    */
    public function __construct(
    BusDispatcher $bus,
    SetLocaleCommand $setLocaleCommand)
    {
    $this->bus = $bus;
    $this->setLocaleCommand = $setLocaleCommand;
    }

    /**
    * Handle an incoming request.
    *
    * @param Illuminate\Http\Request $request
    * @param Closure $next
    * @return mixed
    */
    public function handle($request, Closure $next)
    {
    $this->bus->dispatch($this->setLocaleCommand);

    return $next($request);
    }

    }


    در سازنده کلاس دوتا پراپرتی bus$ و setLocalCommand$ را با نمونه از کلاس های BusDispatcher و SetLocaleCommand مقداردهی کردیم و در متد handle کلاس SetLocaleCommand را برای اجرای فرمان به bus میدهیم.
    در پایان باید این middleware را به فریمورک معرفی کنیم همانظور که در بخش موردنظرش هم توضیح دادم چون میخواهم این middleware عمومی باشد و در کل برنامه اجرا شود پس در فایل Kernel.php در مسیر app/Http به پراپرتی middleware$ که مقدارش آرایه است این middleware را هم اضافه کنید.

    protected $middleware = [
    'Illuminate\Foundation\Http\Middleware\CheckForMai ntenanceMode',
    'Illuminate\Cookie\Middleware\EncryptCookies',
    'Illuminate\Cookie\Middleware\AddQueuedCookiesToRe sponse',
    'Illuminate\Session\Middleware\StartSession',
    'Illuminate\View\Middleware\ShareErrorsFromSession ',
    'App\Http\Middleware\VerifyCsrfToken',
    'App\Http\Middleware\App',
    ];


    اگر فایل test.blade.php را رندر کنید به راحتی با کلیک کردن بر لینک تغییر زبان می توانید زبان برنامه را تغییر دهید. امیدوارم که مطلب برایتان مفید باشد.

  10. #50
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    نقل قول نوشته شده توسط tresa022 مشاهده تاپیک
    سلام اگه میشه نقش های کاربری رو بیشتر توضیح بدید ؟مثلا علاوه بر guest ,manager چند نوع کاربر دیگه هم داشته باشیم چطر از اکستنشن یا وخودمون انجام بدیم؟ چه راه و روشی پیشنهاد میکنید؟خودتون چی استفاده میکنید؟
    ببینید دوست گرامی هر امکاناتی که میخواهید به برنامه تان اضافه کنید بهتره اول سرچ بکنید ببینید آیا پکیج مناسب کارتون وجود داره یا نه که در 95 درصد موارد هم وجود داره شما از فریمورک استفاده میکنید تا نیازی به نوشتن کدهای تکراری نداشته باشید برای ایجاد نقش هم توی همین بخش لاراول یکی از کاربران یکیشو معرفی کرد این لینکو ببینید
    https://github.com/Zizaco/entrust/tree/laravel-5

  11. #51

    نقل قول: آموزش Laravel 5

    احسنت به همت شما
    اگر امکان داره در مورد استفاده از ایجکس بفرمایید

  12. #52
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    مثالی کاربردی از AJAX در لاراول

    امروز با توجه به درخواست یکی از دوستان یک مثال کاربردی با AJAX را کار خواهیم کرد. برای کار با AJAX شما ابتدا باید با جاوااسکریپت و یا یکی از کتابخانه های جاوااسکریپت آشنایی داشته باشید. من در این مثال از jQuery برای کار با AJAX استفاده میکنم.
    ابتدا دوتا route در فایل routes.php ایجاد میکنیم :

    Route::get('ajax-form', 'WelcomeController@ajaxForm');
    Route::post('ajax-form', 'WelcomeController@postAjaxForm');


    داخل کلاس WelcomeController متدهای ajaxForm برای درخواست های GET و متد postAjaxForm را برای درخواست های POST ایجاد میکنیم. متد ajaxForm فرم را به این صورت می نویسیم :

    public function ajaxForm()
    {
    return view('ajax');
    }

    حالا یک فایل ویو به نام ajax.blade.php در مسیر resources/views ایجاد میکنیم و کدهای زیر را در آن قرار دهید :

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>AJAX Example</title>
    <style type="text/css">
    .error {
    color: red;
    font-weight: bold;
    }

    .success {
    color: green;
    font-weight: bold;
    }
    </style>
    </head>
    <body>
    <form action="{{ url('/ajax-form') }}" method="post" id="form1">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    Your Name:<input type="text" name="name"> <span class="error" id="name"></span> <br>
    Your Email:<input type="text" name="email"> <span class="error" id="email"></span> <br>
    Your Website:<input type="text" name="website"> <span class="error" id="website"></span><br>
    <input type="submit" value="Submit">
    </form>
    <div id="results" class="success"></div>

    <script src="{{ asset('js/jquery.js') }}"></script>
    <script type="text/javascript">
    $(document).ready(function (){
    $("#form1").submit(function (event){
    event.preventDefault();
    var $this = $(this);
    var url = $this.attr('action');

    $.ajax({
    url: url,
    type: 'POST',
    dataType: 'JSON',
    data: $this.serialize(),
    })
    .done(function( response ) {
    $('span').empty();
    $("div#results").empty();
    $.each(response, function(index, val) {
    /* iterate through array or object */
    switch(index){
    case "name":
    $('span#name').html(val);
    break;
    case "email":
    $("span#email").html(val);
    break;
    case "website":
    $("span#website").html(val);
    break;
    case "success":
    $("div#results").html(val);
    break;
    }
    });
    })
    .fail(function() {
    console.log('error');
    });

    });
    });
    </script>
    </body>
    </html>


    همانطور که مشاهده می کنید ابتدا در css دوتا کلاس error و sucess برای نمایش زیباتر پاسخ و پیغام های خطا تعریف کردم. فرم موردنظرمان را ایجاد کردیم و کتابخانه جی کوئری را به صفحه ضمیمه کرده و در نهایت کد AJAX را نوشتم . در کد ای جکس متد درخواست یا همون پارامتر type رو POST قراردادم و همچنین نوع داده ای که می خواهیم دریافت کنیم رو JSON گزاشتم چون قرار است پاسخ ما از نوع json باشد. url آن راهم به صورت داینامیک نعریف کردم و از خصوصیت action فرم گرفتم که شما می توانید به صورت دستی هم مقدار بدهید چون من میخواهم این کد ای جکسم قابل استفاده مجدد در هرپروژه دیگر باشد اینکار را کردم. همه داده های فرم راهم به صورت سریالایز فرستادم که بازهم شما می توانید به صورت دستی اینکار را بکنید. متد done هم اگر درخواست ای جکس با موفقیت به پایان برسد پاسخ دریافتی رو دریافت میکنیم و متد fail هم در صورتی که کد ای جکس دارای خطا باشد عملیات موردنظرمان را در آن می نویسیم.

    قبل اینکه کدهای داخل متد done رو توضیح بدم بریم اکشن postAjaxForm در کنترلر WelcomeController رو مشاهده کنیم :

    public function postAjaxForm(Request $request)
    {
    if($request->ajax()){
    //validation
    $rules = [
    'name' => 'required|min:3|max:100',
    'email' => 'required|email',
    'website' => 'url'
    ];

    $v = Validator::make($request->all(), $rules);
    if($v->fails()){
    return Response::json($v->errors());
    } else {
    $html = '<p>Your name: '. $request->input('name') .'</p>';
    $html .= '<p>Your email: '. $request->input('email') .'</p>';
    $html .= '<p>Your website: '. $request->input('website') .'</p>';
    return Response::json(['success'=> $html]);
    }
    } else {
    return 'Request invalid!';
    }
    }


    ابتدا بررسی کردیم اگر نوع درخواست ajax بود ادامه کار را انجام دهیم و سپس داده های فرم را اعتبارسنجی کردیم و اگر اعتبار سنجی دارای خطا بود خطا ها را با استفاده از کلاس Response و متد json به صورت JSON تولید میکنیم. خطاها را به عنوان آرگومان به این متد می دهیم. اندیس ها نام فیلد فرم و مقدار آن پیغام خطای مورد نظر است.
    در صورتی که اعتبارسنجی بدون خطا باشد یک پاسخ در قالب json برای تست ایجاد کردم به این صورت که آرایه ای که به متد json دادم اندیس آن را success قرار دادم که به این اندیس ها در کد ای جکس نیاز پیدا میکنیم.
    حالا یکبار دیگه داخل کد AJAX متد done رو نگاه کنید :

    .done(function( response ) {
    $('span').empty();
    $("div#results").empty();
    $.each(response, function(index, val) {
    /* iterate through array or object */
    switch(index){
    case "name":
    $('span#name').html(val);
    break;
    case "email":
    $("span#email").html(val);
    break;
    case "website":
    $("span#website").html(val);
    break;
    case "success":
    $("div#results").html(val);
    break;
    }
    });
    })

    همانطور که می بینید response ای که دریافت کردیم را به راحتی میتوانیم مدیریت کنیم. ابتدا مقدار span ها و تگ با آیدی results را در هربار که درخواست ای جکس ارسال میکنیم خالی میکنیم تا پیغام های درخواست قبلی پاک شوند سپس همانند دستور foreach در php با استفاده از دستور each می توانیم به اندیس ها و مقادیر هر آیتم دسترسی داشته باشیم. من در این مثال از switch استفاده کردم تا هر اندیسی که به عنوان پاسخ برایمان ارسال شده را در جای مناسب خودش نمایش بدهم. index همان اندیس مورنظرمان و val هم مقدار آن می باشد.

    بعضی مواقع شما درخواست های ای جکس را بدون استفاده از فرم ارسال میکنید در نتیجه چون توکنی ارسال نمیکنید middleware عمومی که توکن را بررسی میکند درخواست را reject میکند برای حل این مشکل کافی است توکن را مثلا در تگ meta تولید کرده سپس و با استفاده از ajaxSetup توکن را به هدر اضافه کنید:
    کد HTML:
    <meta name="csrf-token" content="{{ csrf_token() }}" />
    
    $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
    برای درک بیشتر همانطور که گفتم باید با جاوااسکریپت و جی کوئری آشنایی نسبی داشته باشید. امیدورام که این مثال هم برایتان مفید باشد.
    آخرین ویرایش به وسیله hamedarian2009 : چهارشنبه 23 اردیبهشت 1394 در 21:13 عصر

  13. #53
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    کار با کلاس های Html و Form
    دو تا کلاس در لاراول ۴ بودند که کار رو برای نوشتن کدهای تکراری HTML برایمان آسان تر میکردن که در لاراول ۵ به طور پیش فرض وجود ندارد و باید به آن اضافه کنیم. چون در خیلی از مثال های موجود در وب از این کلاس ها استفاده شده لازم دیدم این کلاس ها را معرفی کنم. ابتدا نحوه افزودن آن به لاراول ۵ رو توضیح میدم.
    در پوشه اصلی لاراول ۵ یک فایل به نام composer.json را باز کرده و خط "illuminate/html": "5.*" به بخش require اضافه کنید به این صورت :

    "require": {
    "illuminate/html": "5.*",
    "laravel/framework": "5.0.*"
    },

    سپس در ترمینال به پوشه پروژه خود رفته و دستور زیر را اجرا کنید :

    composer update


    سپس فایل app.php در پوشه config را باز کنید و به انتهای آرایه providers مقدار 'Illuminate\Html\HtmlServiceProvider' را اضافه کنید به این صورت :

    'providers' => [
    /* more already here */
    'Illuminate\Html\HtmlServiceProvider',


    همچنین دو خط زیر را هم به انتهای آرایه aliases اضافه کنید به این صورت :

    'aliases' => [
    /* more already here */
    'Html' => 'Illuminate\Html\HtmlFacade',
    'Form' => 'Illuminate\Html\FormFacade',
    ],

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

    کلاس Html
    ایجاد تگ script: از متد script استفاده میکنید و پارامتر اولی مسیر اسکریپت و پارامتر دوم هم که به صورت آرایه هست شامل attribute های تگ می باشد

    {!! Html::script('js/jquery.js', ['type' => 'text/javascript']) !!}
    //output: <script type="text/javascript" src="http://laravel.dev/js/jquery.js"></script>


    ایجاد تگ link : مشابه دستور بالا است و تگ لینک را ایجاد میکند

    {!! Html::style('css/style.css') !!}
    //output: <link media="all" type="text/css" rel="stylesheet" href="http://laravel.dev/css/style.css">


    ایجاد تگ image : با استفاده از متد image و پارامتر اول مسیر تصویر و پارامتر دوم متن جایگزین و پارامتر سوم هم attribute ها می باشند.

    {!! Html::image('images/1.jpg' , 'alternate', ['class' => 'img'])!!}
    //output: <img src="http://laravel.dev/images/1.jpg" class="img" alt="alternate">


    ایجاد تگ a : با استفاده از متد link و پارامتر اول url مورد نظر و پارامتر دوم عنوان تگ که اگر null قرار دهیم همان url عنوان در نظر گرفته می شود و پارامتر سوم هم attribute های تگ می باشند.

    {!! Html::link('user/profile', 'Go User Profile', ['calss' => 'btn btn-primary']) !!}
    //output: <a href="http://laravel.dev/user/profile" calss="btn btn-primary">Go User Profile</a>


    ایجاد تگ ul: با استفاده از متد ul و پارامتر اول آرایه ای از لیست ها و پارامتر دوم هم آرایه ای از attribute ها می باشد.

    {!! Html::ul(['Item1', 'Item2', 'Item3'], ['calss' => 'nav']) !!}
    //output: <ul calss="nav"><li>Item1</li><li>Item2</li><li>Item3</li></ul>

    برای آشنایی با سایر متدها به اینجا مراجعه کنید

    کلاس Form
    ایجاد تگ شروع و پایان form : با استفاده از متد open و یک پارامتر آرایه ای میگیرد که attribute ها را در آن ست میکنیم. url همان اکشن فرم را مقداردهی میکند و همچنین files اگر true قرار دهیم فرم برای آپلود فایل مناسب می باشد. این متد فیلد توکن را هم ایجاد میکند. متد close هم تگ فرم را می بندد.

    {!! Form::open(['url' => 'conatct', 'id'=>'form1', 'files'=> true]) !!}
    //output: <form method="POST" action="http://laravel.dev/conatct" accept-charset="UTF-8" id="form1" enctype="multipart/form-data"><input name="_token" type="hidden" value="FzsNKPfXXLbuD1YoMCfgJXbEsYW7Z2CTAohEyiG0">

    {!! Form::close() !!}


    ایجاد تگ label و input از نوع text : در متد label پارامتر اول نام فیلدی است که میخواهیم برای آن لیبل تعریف کنیم و پارامتر دوم مقدار لیبل است و پارامتر سوم هم آرایه ای از attribute ها می باشد. در صورتی که خصوصیت id برای فیلد متناظر تگ label تعریف نکرده باشیم به طور خودکار id با مقدار هم نام با فیلد input متناظرش ایجاد خواهد کرد. در متد text هم یک input از نوع text ایجاد کرده که پارامتر اول آن نام آن و پارامتر دوم مقدار آن و پارامتر سوم هم آرایه ای از attribute ها می باشد.

    {!! Form::label('name', 'Your Name', ['class' => 'label']) !!}
    //output: <label class="label" for="name">Your Name</label>
    {!! Form::text('name', null, ['calss' => 'test']) !!}
    //output: <input id="name" type="text" name="name" calss="test">

    نحوه تعریف متدهای hidden, email, url, textarea, number هم مشابه متد text می باشد.

    ایجاد input از نوع file : پارامتر اول آن نام فیلد و پارامتر دوم هم آرایه ای از attribute ها است.

    {!! Form::file('photo') !!}
    //output: <input type="file" name="photo">


    ایجاد input از نوع submit: پارامتر اول آن مقدار فیلد و پارامتر دوم آرایه ای از attribute ها است.

    {!! Form::submit('Register' , ['calss' => 'btn btn-primary']) !!}
    //output: <input type="submit" value="Register" calss="btn btn-primary">

    برای اطلاعات بیشتر و آشنایی با سایر متدها به اینجا مراجعه کنید

  14. #54
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    محل زندگی
    جنوب
    پست
    66

    نقل قول: آموزش Laravel 5

    سلام
    میشه در رابطه با قسمت لاگین و رجیستر لاراول 5 یه کم توضیح بدین
    .../Http/Controllers/Auth
    و قسمت روتش

    Route::controllers([
    'auth' => 'Auth\AuthController',
    'password' => 'Auth\PasswordController',
    ]);

  15. #55
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    نقل قول نوشته شده توسط MeSaeid مشاهده تاپیک
    سلام
    میشه در رابطه با قسمت لاگین و رجیستر لاراول 5 یه کم توضیح بدین
    .../Http/Controllers/Auth
    و قسمت روتش

    Route::controllers([
    'auth' => 'Auth\AuthController',
    'password' => 'Auth\PasswordController',
    ]);
    تو بخش کنترلرها گفتم که یک نوع routing در لاراول داریم که تلویجی یا ضمنی هست به اینجا نگاه کنید

    Route::controller('users', 'UserController');

    //کلاس کنترلر
    class UserController extends BaseController {

    public function getIndex()
    {
    //
    }

    public function postProfile()
    {
    //
    }

    public function anyLogin()
    {
    //
    }

    }

    هنگام تعریف route فقط مسیر و نام کنترلر رو بهش میدیم و بعد اکشن هایی که تعریف میکنیم کافیه با توجه به نوع درخواست http ای که می خواهیم قبول کنند مثل get , post, any , ... اونو پیشوند نام اکشن قرار میدیم به طور مثال آدرس http://example.com/users/login همه نوع درخواستی رو قبول میکنه چون پیشوند any براش گزاشتیم. خب تا اینجا که مشکلی نیست؟

    حالا اگه بخواهیم چندتا route به صورت بالا تعریف کنیم دیگه نیازی نیست هربار بیایم اون کدو تکرار کنیم بلکه از متد controllers به جای controller استفاده میکنیم و مسیر ها رو داخل آرایه قرار میدیم

    کنترلر های AuthController و PasswordController هم دقیقا اکشن هاش به همین صورت تعریف میشن مثلا getLogin یا postRegister , ...
    وقتی هم url را به این صورت می نویسیم میبینیم http://example.com/auth/login اکشن getLogin فراخوانی میشه
    منتها لاراول قبلا اومده اینهارو توی یک trait در مسیر Illuminate\Foundation\Auth\AuthenticatesAndRegiste rsUsers پیاده سازی کرده اما اگه بخواهیم تو اکشن ها تغییری بدیم کافیه تو همون کنترلر خودش اکشن رو دوباره بازنویسی کنیم و کدهای خودمون رو داخلش بنویسیم مثلا ببین من متد getLogin رو توی کلاس AuthController بازنویسی کردم:

    public function getLogin()
    {
    return view('site.login');
    }

    فایل ویو رو که از پوشه auth/login.blade.php رندر میشه رو به مسیر site/login.blade.php در پوشه views تغییر دادم.
    فکرکنم توضیحات کامله دیگه قسمت لاگین و رجیستر میخواهید دقیقا کجاشو توضیح بدم؟

  16. #56
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    محل زندگی
    جنوب
    پست
    66

    نقل قول: آموزش Laravel 5

    نقل قول نوشته شده توسط hamedarian2009 مشاهده تاپیک
    فکرکنم توضیحات کامله دیگه قسمت لاگین و رجیستر میخواهید دقیقا کجاشو توضیح بدم؟
    ممنون از شما بسیار کامل, فقط میشه در مورد این قسمت یکم توضیح بدین

    public function __construct(Guard $auth, Registrar $registrar)
    {
    $this->auth = $auth;
    $this->registrar = $registrar;

    $this->middleware('guest', ['except' => 'getLogout']);
    }

  17. #57
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    نقل قول نوشته شده توسط MeSaeid مشاهده تاپیک
    ممنون از شما بسیار کامل, فقط میشه در مورد این قسمت یکم توضیح بدین

    public function __construct(Guard $auth, Registrar $registrar)
    {
    $this->auth = $auth;
    $this->registrar = $registrar;

    $this->middleware('guest', ['except' => 'getLogout']);
    }
    از trait ای به نام AuthenticatesAndRegistersUsers توی کنترلر استفاده شده که دوتا پراپرتی داره به روش type-hint اومده دوتا نمونه از رابط های Guard و Registrar ایجاد کرده و به این دو پراپرتی داده تا توی برنامه از متداشون استفاده بشه. Guard برای عملیات های مربوط به لاگین و Registrar برای ثبت نام کاربر پیاده شده.

    سومی هم که یک middleware ای تعریف شده به نام guest که درخواست های ورودی به کنترلر AuthController رو فیلتر میکنه که این middleware درمسیر app\Http\Middleware به نام RedirectIfAuthenticated می باشد که میاد هردرخواستی رو اگه کاربر لاگین کرده بود ریدایرکت میکنه به صفحه شخصی کاربر هدایت میکنه مثلا اگه کاربری لاگین باشه دیگه صفحه http://example.com/auth/login براش باز نمیشه و میره به صفحه home . اون except هم که میگه این middleware به همه اکشن ها اعمال بشه به جز اکشن getLogout

  18. #58
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    محل زندگی
    جنوب
    پست
    66

    نقل قول: آموزش Laravel 5

    سلام
    برای نماش Title و آپشن های دیگه توی ویو باید اطلاعات رو زمانی که قالب رو رندر می کنیم بش بدیم خب این کار خسته کننده ای هست که برای نمایش هر ویو این همه اطلاعات رو بنویسیم
    چه راهی پیشنهاد می کنید ؟ خب من میخواستم اطلاعات مربوط به سایت رو از دیتابیس بخونم بعد تو یک آرایه Options$ بفرستم .

  19. #59
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    توی پست مربوط به blade هم گفتم دیگه شما یه قالب تعریف کنید و بخش هایی که تو همه صفحات تکرار میشه رو اونجا یکبار بنویسید و فقط بخش هایی که تو هر صفحه محتویات متفاوتی خواهد داشت رو براش yield تعریف کنید مثلا فرض کن تو پوشه resources/views/layouts یک فایل به نام master.blade.php ایجاد کنیم به این صورت :
    کد HTML:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>@yield('title', 'Blog Title')</title>
        <link rel="stylesheet" type="text/css" href="{{ asset('css/style.css') }}">
        @yield('head')
    </head>
    <body>
        <div class="container">
            @yield('content')
        </div>
    
        <script type="text/javascript" src="{{ asset('js/jquery.js') }}"></script>
    
        @yield('js')
    </body>
    </html>
    بعدش تو هر ویو دیگه کافیه به این صورت ازش استفاده کنید :
    کد HTML:
    @extends('layouts.master')
    
    @section('title', 'Home')
    
    @section('content')
        <p>new content</p>
        <p class="test"></p>
    @stop
    
    @section('js')
        <script type="text/javascript">
            document.getElementsByClassName("test").innerHTML = "another content";
        </script>
    @stop
    چیز تکراری دیگه نداریم که هربار بخواهید بنویسید نیازی به دیتابیس هم نیست
    آخرین ویرایش به وسیله hamedarian2009 : جمعه 08 خرداد 1394 در 21:46 عصر

  20. #60
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    محل زندگی
    جنوب
    پست
    66

    نقل قول: آموزش Laravel 5

    نقل قول نوشته شده توسط hamedarian2009 مشاهده تاپیک
    توی پست مربوط به blade هم گفتم دیگه شما یه قالب تعریف کنید و بخش هایی که تو همه صفحات تکرار میشه رو اونجا یکبار بنویسید و فقط بخش هایی که تو هر صفحه محتویات متفاوتی خواهد داشت رو براش yield تعریف کنید مثلا فرض کن تو پوشه resources/views/layouts یک فایل به نام master.blade.php ایجاد کنیم به این صورت :
    کد HTML:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>@yield('title', 'Blog Title')</title>
        <link rel="stylesheet" type="text/css" href="{{ asset('css/style.css') }}">
        @yield('name', 'head')
    </head>
    <body>
        <div class="container">
            @yield('content')
        </div>
    
        <script type="text/javascript" src="{{ asset('js/jquery.js') }}"></script>
    
        @yield('js')
    </body>
    </html>
    بعدش تو هر ویو دیگه کافیه به این صورت ازش استفاده کنید :
    کد HTML:
    @extends('layouts.master')
    
    @section('title', 'Home')
    
    @section('content')
        <p>new content</p>
        <p class="test"></p>
    @stop
    
    @section('js')
        <script type="text/javascript">
            document.getElementsByClassName("test").innerHTML = "another content";
        </script>
    @stop
    چیز تکراری دیگه نداریم که هربار بخواهید بنویسید نیازی به دیتابیس هم نیست
    ممنون از شما
    فرض کنید یوزر بخواد عنوان سایت رو تغییر بده ( از پنل ) یا مثلا یک سری اطلاعات مربوط به آمار سایت ( که در تمام قسمت های سایت وجود داره )و از این چیزا بخواد لود بشه اینها تغییر می کنن و نمیشه از این روش رفت
    بنده میخوام یه سری اطلاعات بدون اینکه من به ویو بدم خودش لود کنه مثل از این چیزا که گفتم

  21. #61
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    هرچیزی میخواد توی همه صفحات نشون داده بشه اعم از امار سایت و ... تو قالب اصلی و هرچیزی که تو هر صفحه جدیده توی همون view قرار میگیره حالا میخاد از دیتابیس خونده بشه یا هرجای دیگه اون بستگی به برنامتون داره هدف اینه که شما دیگه هربار داده تکراری به ویو نفرستین

  22. #62
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    محل زندگی
    جنوب
    پست
    66

    نقل قول: آموزش Laravel 5

    نقل قول نوشته شده توسط hamedarian2009 مشاهده تاپیک
    هرچیزی میخواد توی همه صفحات نشون داده بشه اعم از امار سایت و ... تو قالب اصلی و هرچیزی که تو هر صفحه جدیده توی همون view قرار میگیره حالا میخاد از دیتابیس خونده بشه یا هرجای دیگه اون بستگی به برنامتون داره هدف اینه که شما دیگه هربار داده تکراری به ویو نفرستین
    بله حرف شما درسته
    بنده دنبال اینها بودم View Composers و View Share که مشکلم حل شد

  23. #63
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1393
    محل زندگی
    جنوب
    پست
    66

    نقل قول: آموزش Laravel 5

    سلام
    میشه در رابطه با Scheduling یه کم توضح بدین مثلا
    $schedule->call(function() {
    // Do stuff
    })->everyFiveMinutes();

    خب چطور این رو فعال کنیم ؟ php artisan schedule:run این دستور رو اجرا کردم ولی گفت چیزی برای اجرا شدن پیدا نشد

  24. #64
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    نقل قول نوشته شده توسط MeSaeid مشاهده تاپیک
    سلام
    میشه در رابطه با Scheduling یه کم توضح بدین مثلا
    $schedule->call(function() {
    // Do stuff
    })->everyFiveMinutes();

    خب چطور این رو فعال کنیم ؟ php artisan schedule:run این دستور رو اجرا کردم ولی گفت چیزی برای اجرا شدن پیدا نشد
    تو این چیزی ننوشتید که بخواد اجرا بشه

    مواقعی هست که می خواهید یک دستور در زمان های مشخصی به طور اتوماتیک اجرا شود با استفاده از command scheduler این کار رو به راحتی میتونید انجام دهید. برای اینکار کافیه توی مسیر app/Console فایل Kernel.php را باز کنید و داخل متد schedule دستور مورد نظرتون رو بنویسید. مثلا در مثالی که اشاره کنید میتونید به طور مستقیم یک عملیاتی را داخل closure تعریف کنید و متد بعدی آن هم برنامه زمانی اجرای آن را مشخص میکند که در مثالی که ذکر کردین هر ۵ ذقیقه یک بار است. به چندتا مثال زیر توجه کنید:
    protected function schedule(Schedule $schedule)
    {
    $schedule->command('inspire')->hourly();

    $schedule->command('cache:clear')->hourly();

    $schedule->call(function()
    {
    \DB::delete("DELETE * FROM accounts WHERE expire = ?", [0]);

    })->dailyAt('24:00');
    }


    از آخر توضیح میدم ببینید به متد call یک closure یا تابع بی نام داده ایم که به طور مستقیم یک دستور SQL رو نوشتم که هر روز سر ساعت 24:00 میاد و حساب های کاربری که انقضا آنها صفر شده است را حذف میکند

    در مثال وسطی به متد cammand میشه یک فرمان CLI یا همون Artisan Command Line که وجود داره رو به طور مستقیم بهش داد که در اینجا دستور clear:cache رو بهش دادیم و گفتیم که هر یک ساعت یکبار cache رو پاک کند

    همچنین می توانیم یک فرمان جدید Artisan ایجاد کنیم مثال اولی هم یک فرمان جدید Artisan رو به نام inspire ایجاد کرده و ابتدا آن را به پراپرتی commands$ که یک آرایه هست اضافه کرده و سپس در متد schedule از آن استفاده کرده. کلاس این فرمان در مسیر app/Console/Commands قرار دارد.
    protected $commands = [
    'App\Console\Commands\Inspire',
    ];

    فرمان inspire که به صورت php artisan inspire در ترمینال قابل اجرا هست هم هر یک ساعت یکبار اجرا خواهد شد. در صورتی که میخواهید با نحوه ایجاد یک فرمان Artisan آشنا شوید این لینک خیلی واضح توضیح داده است

    در انتها اگر دستور زیر را به cron job هاست خود بدهید هر یک دقیقه یک بار این دستور را اجرا میکند و اگر job ای وجود داشت اجرا میکند
    * * * * * php /var/www/html/laravel/artisan schedule:run 1>> /dev/null 2>&1

    دقت کنید بعد از دستور php باید مسیر فیزیکی فابل artisan که در پوشه اصلی فریمورک قرار داره رو بنویسید

    همچنین اینجا فقط دوتا متد hourly و dailyAt رو مثال زدم ولی کلی متد دیگه هم هست که در زیر براتون لیست میکنم و میتونید از هرکدوم استفاده کنید :

    ->hourly()
    ->daily()
    ->at($time) // 24 hour time
    ->dailyAt($time)
    ->twiceDaily()
    ->weekdays()
    ->mondays()
    ->tuesdays()
    ->wednesdays()
    ->thursdays()
    ->fridays()
    ->saturdays()
    ->sundays()
    ->weekly()
    ->weeklyOn($day, $time)
    ->monthly()
    ->yearly()
    ->everyFiveMinutes()
    ->everyTenMinutes()
    ->everyThirtyMinutes()
    ->days() // Days of the week

  25. #65

    نقل قول: آموزش Laravel 5

    آقا حامد دستت درد نکنه بابت زحمتت.

    ما اگر توی جدول چندین ارتباط one 2 one داشته باشیم یا حتی سایر ارتباطات فرض کنید من یک جدول محصولات .
    و بعد این جدول با جداول

    تگ های کالا
    دسته بندی های کالا
    ویژگیهای کالا (دوربین فلان ، بلوتوث فلان ، اندروید فلان و ...)
    نوع کار ( رنگ و سایز ..)
    جدول کاربران ( برای پیدا کردن نوسنده )
    دیدگاهها و بررسی ها ی کاربران

    و یا حتی چند مورد دیگه

    ارتباط داشته باشه برای هر جدول کوئری زده میشه دیگه درسته ، خوب اینها همه قراره توی یک صفحه نمایش داده بشه به نظر شما این خیلی سنگین نمیکنه کوئری ها رو و فشار نمیاره ؟ راه اصولیش چیه ؟

    آیا استاندارد و تعداد خاصی جدول مشخص رو باید برای ارتباطات به کار ببرم یا محدودیتی نداره ؟ چون ما اگر بخوایم نرمال کنیم جداولمون رو خود به خود جداولمون تعدادش بالا میره.

  26. #66
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    نقل قول نوشته شده توسط 1sarbaz مشاهده تاپیک
    آقا حامد دستت درد نکنه بابت زحمتت.

    ما اگر توی جدول چندین ارتباط one 2 one داشته باشیم یا حتی سایر ارتباطات فرض کنید من یک جدول محصولات .
    و بعد این جدول با جداول

    تگ های کالا
    دسته بندی های کالا
    ویژگیهای کالا (دوربین فلان ، بلوتوث فلان ، اندروید فلان و ...)
    نوع کار ( رنگ و سایز ..)
    جدول کاربران ( برای پیدا کردن نوسنده )
    دیدگاهها و بررسی ها ی کاربران

    و یا حتی چند مورد دیگه

    ارتباط داشته باشه برای هر جدول کوئری زده میشه دیگه درسته ، خوب اینها همه قراره توی یک صفحه نمایش داده بشه به نظر شما این خیلی سنگین نمیکنه کوئری ها رو و فشار نمیاره ؟ راه اصولیش چیه ؟

    آیا استاندارد و تعداد خاصی جدول مشخص رو باید برای ارتباطات به کار ببرم یا محدودیتی نداره ؟ چون ما اگر بخوایم نرمال کنیم جداولمون رو خود به خود جداولمون تعدادش بالا میره.
    بهتر بود سوالتون رو در بخش دیتابیس می پرسیدید ولی خب اگه شما همه اینها رو در یک جدول هم به کار ببرید باعث افزونگی و آنومالی در دیتابیس خواهد شد و ناگزیر هستید حداقل تا سطح 3NF نرمالسازی را انجام دهید
    در کل این کوئری که استفاده میکنید باید بهینه ترین کوئری بسته به نتیجه ای که از آن انتظار دارید باشد که همه اینها نیاز به داشتن تجربه و تسلط به مباحث پایگاه داده می باشد

  27. #67

    نقل قول: آموزش Laravel 5

    سلام آقا حامد عزیز .ممنون از آموزشهای خوب و کامل شما
    2 تا سوال دارم !
    1-برای اینکه از بوت استرپ استفاده کنیم فایلهای بوت استرپ دانلود کردم از سایت بوت استرپ بریزیم تویه پوشه public ؟

    2-میشه یه آموزش درباره کد کپچا بدی موقع لاگین کردن ؟ آیا لاراول برای کار با کدهای کپچا راه حل خاصی دارد یا نه ؟

  28. #68
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    نقل قول نوشته شده توسط relaxdevil مشاهده تاپیک
    سلام آقا حامد عزیز .ممنون از آموزشهای خوب و کامل شما
    2 تا سوال دارم !
    1-برای اینکه از بوت استرپ استفاده کنیم فایلهای بوت استرپ دانلود کردم از سایت بوت استرپ بریزیم تویه پوشه public ؟

    2-میشه یه آموزش درباره کد کپچا بدی موقع لاگین کردن ؟ آیا لاراول برای کار با کدهای کپچا راه حل خاصی دارد یا نه ؟
    1- میتونید فایل app.blade.css رو تو پوشه views بگیرید و برای قالب مستر خودتون ویرایش کنید این قالب به صورت بوت استرپ هست و فایل های مربوط به auth ازش استفاده کردن ولی در کل بله فایل های css و js و تصاویر رو تو پوشه public قرار دهید و هنگام استفاده به این صورت هم آدرس دهی کنید:
    کد HTML:
    <link rel="stylesheet" type="text/css" href="{{ asset('bootstrap/css/bootstrap.min.css') }}">
    2- به طور پیش فرض لاراول هیچ کلاسی برای کپچا قرار نداده و باید بهش اضافه کنید که میتونید reCaptcha و botDetect و ... رو بهش اضافه کنید که حتما فردا یک آموزش در همین زمینه قرار خواهم داد.

  29. #69
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    افزودن Captcha و کار با آن

    برای کار با کپچا شما می توانید از کپچاهای معروف زیادی همچون reCaptcha استفاده کنید اما من از یک کپچای خوب که کار با آن آسان است در این آموزش استفاده خواهم کرد.
    ابتدا با ترمنیال به مسیر پروژه لاراول بروید و دستور زیر را تایپ و اجرا کنید:
    composer require mews/captcha


    سپس در فایل config/app.php بخش providers خط زیر را به انتهای آن اضافه کنید :
            'Mews\Captcha\CaptchaServiceProvider',

    همچنین خط زیر را هم به انتهای بخش aliases اضافه کنید :
    'Captcha' => 'Mews\Captcha\Facades\Captcha',

    در پایان هم دستور زیر را احرا کنید :
    php artisan vendor:publish


    اکنون می توانیم از کپچا در فرم ها استفاده کنیم. با یک مثال کاربردی نحوه استفاده از آن را توضیح خواهم داد. طبق خواسته یکی از کاربران این مثال را در فرم لاگین انجام می دهم.
    ابتدا فایل login.blade.php در مسیر resources/views/auth رو به این صورت ویرایش میکنیم :
    کد HTML:
    <form class="form-horizontal" role="form" method="POST" action="{{ url('/auth/login') }}">
                            <input type="hidden" name="_token" value="{{ csrf_token() }}">
    
                            <div class="form-group">
                                <label class="col-md-4 control-label">E-Mail Address</label>
                                <div class="col-md-6">
                                    <input type="email" class="form-control" name="email" value="{{ old('email') }}">
                                </div>
                            </div>
    
                            <div class="form-group">
                                <label class="col-md-4 control-label">Password</label>
                                <div class="col-md-6">
                                    <input type="password" class="form-control" name="password">
                                </div>
                            </div>
    
                            <div class="form-group">
                                <label class="col-md-4 control-label">Captcha Code</label>
                                <div class="col-md-6">
                                    {!! Captcha::img('flat') !!}
                                    <input type="text" class="form-control" name="captcha">
                                </div>
                            </div>
    
                            <div class="form-group">
                                <div class="col-md-6 col-md-offset-4">
                                    <div class="checkbox">
                                        <label>
                                            <input type="checkbox" name="remember"> Remember Me
                                        </label>
                                    </div>
                                </div>
                            </div>
    
                            <div class="form-group">
                                <div class="col-md-6 col-md-offset-4">
                                    <button type="submit" class="btn btn-primary">Login</button>
    
                                    <a class="btn btn-link" href="{{ url('/password/email') }}">Forgot Your Password?</a>
                                </div>
                            </div>
                        </form>
    همانطور که مشاهده می کنید با دستور Captcha::img('flat') تصویر کپچا نمایش داده می شود و من چون می خواستم ابعاد تصویر کمی بزرگتر باشد از flat استفاده کردم که می توانید در فایل config/captcha.php تنظیمات مربوط به ابعاد و رنگ ها را به دلخواه خودتان تغییر دهید.

    حالا یک کلاس Request هم برای اعتبار سنجی با استفاده از دستور زیر ایجاد میکنیم:
    php artisan make:request LoginRequest

    قوانین اعتبار سنجی را در متد rules قرار می دهیم و متد authorize را هم true می کنیم چون نیازی به احراز هویت در این درخواست نمی باشد. کلاس LoginRequest در مسیر app/Http/Requests باید مشابه مثال زیر ویرایش شود :

    <?php namespace App\Http\Requests;

    use App\Http\Requests\Request;

    class LoginRequest extends Request {

    /**
    * Determine if the user is authorized to make this request.
    *
    * @return bool
    */
    public function authorize()
    {
    return true;
    }

    /**
    * Get the validation rules that apply to the request.
    *
    * @return array
    */
    public function rules()
    {
    return [
    'email' => 'required|email',
    'password' => 'required|min:3|max:17',
    'captcha' => 'required|captcha',
    ];
    }

    }



    همانطور که می بینید برای فیلد captcha یک قانون اعتبارسنجی جدید به نام captcha قرار دادیم که میاد ورودی کاربر را با کد داخل تصویر مطابقت میده و در صورتی که مغایرت داشته باشد خطایی صادر میکند. پس باید داخل مسیر resources/lang/en فایل validation.php را باز کنیم و برای آن یک پیغام مناسب ست میکنیم. پس خط زیر را به آن اضافه کنید :
    "captcha"               => "The :attribute field entered is wrong",


    در ادامه باید در کنترلر AuthController در مسیر app/Http/Controllers/Auth متد postLogin را بازنویسی کنیم. ابتدا به کنترلر کلاس های زیر را ایمپورت می کنیم:

    use App\Http\Requests\LoginRequest;
    use Request;
    use Auth;


    حالا متد postLogin را به این صورت اضافه کنید :

    public function postLogin(LoginRequest $request)
    {
    $credentials = Request::only('email', 'password');

    if(Auth::attempt($credentials)){

    return redirect()->intended('/home');

    } else {

    return redirect()->back()->withErrors(['invalid' => 'The username or email invalid!']);
    }
    }

    خب دیگه مثال به پایان رسید و الان می تونید از کپچا در فرم هایتان به همین آسانی استفاده کنید. فقط دیدم این کپچا برای رفرش کردن کد توسط کاربر گزینه ای نداره خودم یک تابع با جی کوئری براش نوشتم . ابتدا یک تصویر برای رفرش کپچا در کنار تصویر کپچا قرار دادم :
    کد HTML:
     <img src="{{ asset('img/refresh.svg') }}" alt="refresh" id="refresh" width="50" height="50">
    در انتها هم دستورات jquery زیر را به صفحه اضافه کردم تا با هربار کلیک روی تصویر رفرش کپچا تغییر کند.

    <script type="text/javascript">
    $('document').ready(function(){
    $('#refresh').click(function(){
    var src = "{{ Captcha::src() }}";
    var timestamp = new Date().getTime();
    $("img[alt=captcha]").attr("src", src + '?' +timestamp);
    });
    });
    </script>


    تصویر زیر نتیجه کار را نشان می دهد. امیدوارم که این مطلب هم برایتان مفید بوده باشد.
    captcha.png

  30. #70

    نقل قول: آموزش Laravel 5

    ممنون از زحمتی که میکشی
    خیلی عالیه
    چجوری میشه rule های خودمون رو به validator اضافه کنیم؟ مثلا یه متد داریم که ساختار کد ملی رو چک میکنه و با true یا false جواب میده، اینو چطور میشه بعنوان rule شناسوند؟

  31. #71
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    نقل قول نوشته شده توسط imohammad مشاهده تاپیک
    ممنون از زحمتی که میکشی
    خیلی عالیه
    چجوری میشه rule های خودمون رو به validator اضافه کنیم؟ مثلا یه متد داریم که ساختار کد ملی رو چک میکنه و با true یا false جواب میده، اینو چطور میشه بعنوان rule شناسوند؟
    ببینید میتونید از قانون regex استفاده کنید و برای فیلد موردنظرتون یک عبارت منظم مناسب کارتون بنویسید و از آن استفاده کنید مثلا برای کد ملی به این صورت :

    'codemelli' => 'required|regex:#^[0-9]{10}$#',

    و میتونید براش یک پیام هم ست کنید و به عنوان پارامتر سوم به متد make بدهید:

    $messages = [
    'regex' => 'فیلد کدملی را به درستی وارد نمایید.',
    ];

    $validator = Validator::make($input, $rules, $messages);


    همچنین اگه به پستی که در مورد اعتبارسنجی توضیح دادم مراجعه کنید نحوه ایجاد یک rule دلخواه رو هم گفتم که قبل اعتبارسنجی باید آن را تعریف کنید مثلا من یک rule به نام alpha_spaces تعریف کردم که حروف الفبا به اضافه فاصله را قبول میک ند و مثل بالا و یا در فایل validation.php پیغام مناسبی هم براش ست کنید.

    Validator::extend('alpha_spaces', function($attribute, $value)
    {
    return preg_match('#^[a-zA-Z ]+$#', $value);
    });

    شاید شما برای کد ملی بخواهید صحت کد ملی رو هم بررسی کنید که استفاده از متد extend بهتر به کارتون میاد که در تابع بی نام عملیات موردنظرتونو میونیسید و در پایان هم میتونید false یا true را return کنید.
    آخرین ویرایش به وسیله hamedarian2009 : شنبه 09 خرداد 1394 در 21:29 عصر

  32. #72

    نقل قول: آموزش Laravel 5

    مرسی از سرعت عمل بالا کارت حرف نداره مهندس
    استاد یه در خواست دارم میشه هر آموزشی که میدی پروژه لاراول شو آپلود کنی جایی لینک بدی بهمون ؟
    آخرین ویرایش به وسیله relaxdevil : شنبه 09 خرداد 1394 در 21:19 عصر

  33. #73
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    نقل قول نوشته شده توسط relaxdevil مشاهده تاپیک
    مرسی از سرعت عمل بالا کارت حرف نداره مهندس
    استاد یه در خواست دارم میشه هر آموزشی که میدی پروژه لاراول شو آپلود کنی جایی لینک بدی بهمون ؟
    خواهش میکنم دوست عزیز
    باشه سعی میکنم در تعطیلات آخر هفته همه مثال هایی که کار کردیم را در یک پروژه با یک قالب بوت استرپ زیبا قرار بدم و در اینجا لینک آن را بگذارم

  34. #74

    نقل قول: آموزش Laravel 5

    سلام مجدد خدمت آقا حامد عزیز

    فرض کنید ما یک سیستم وبلاگدهی رو میخوایم بنویسیم .

    خوب سابدمین روتینگ که راحت میشه با این روش پیاده کرد.
    http://laravel.com/docs/4.2/routing#sub-domain-routing

    اما حالا اگر هر وبلاگ نویس خواست دامنه اختصاصی خودش رو به وبلاگش وصل کنه ما باید چطور روتها رو درست کنیم ؟

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

    Request::getHost()


    و ایجاد شرط و این مسائل در همون فایل route مدیریتش کنم اما خیلی به نظر غیر اصولی میاد و کثیف کاری میشه. پیشنهاد شما چیه ؟
    آخرین ویرایش به وسیله 1sarbaz : جمعه 15 خرداد 1394 در 17:26 عصر

  35. #75
    کاربر دائمی آواتار rahahost
    تاریخ عضویت
    دی 1390
    محل زندگی
    تهران - خیابان ولیعصر
    پست
    167

    نقل قول: آموزش Laravel 5

    سلام .

    واقعا آموزش های مفید و جامعی بود :)
    متشکرم ازتون .

    لطفا اگر امکانش هست ، کمی در مورد " کش " در لاراول توضیح بدید و یه مثال کاربردی براش بزنید .

    متشکرم .

  36. #76
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: آموزش Laravel 5

    سلام دوستان
    من به علت مشغله ای کاری که برام پیش اومده فعلا نمیتونم در خدمت شما دوستان باشم و خیلی زود با مباحث جدیدتر و پاسخگویی به سوالات شما برخواهم گشت

  37. #77
    کاربر دائمی آواتار stackprogramer
    تاریخ عضویت
    بهمن 1393
    محل زندگی
    شیراز
    پست
    117

    نقل قول: آموزش Laravel 5

    جناب مهندس من هم امتحان دارم،تا این فرصتی بشه من هم امتحانمو بدم،بعد بیام از اموزش خوبتون استفاده کنم تا موقع انشاالله دوبار ه با انرژی برگردین واقعا عالی بود اموزشتون

  38. #78

    نقل قول: آموزش Laravel 5

    با وجود CSRF ، آیا نیازی به کپچا هست؟

  39. #79
    کاربر دائمی آواتار 2undercover
    تاریخ عضویت
    تیر 1391
    محل زندگی
    خراسان رضوی
    پست
    1,471

    نقل قول: آموزش Laravel 5

    نقل قول نوشته شده توسط tuytoosh مشاهده تاپیک
    با وجود CSRF ، آیا نیازی به کپچا هست؟
    CSRF که خودش اسم یک نوع حمله است Cross-Site Request Forgery این چیزی که ازش در مقابل این حمله استفاده میشه CSRF Token هست که کارش این هست که ما اطمینان حاصل می کنیم که درخواستی که به سایت برای یک کار ارسال شده از طریق خود سایت هست نه از جای دیگه ای.

    حمله CSRF رو با توجه به چیزی که من فکر می کنم میشه با Captcha هم خنثی اش کرد ولی خوب دلیلی نداره مثلا برای اضافه کردن یک کالا به سبد خرید کاربر ازش درخواست کنیم Captcha رو وارد بکنه پس همون CSRF Token کافی هست. ولی چیزی که شما گفتید که با وجود CSRF Token دیگه نیازی به Captcha نباشه خوب اشتباه هست؛ چون کاربرد Captcha اصلا متفاوت به حمله CSRF هست. Captcha برای این استفاده میشه که مطمئن بشیم که درخواست ارسال شده توسط یک انسان هست و کار یک ربات نیست که مثلا می خواد از طریق Brute Force به نتیجه ای برسه یا فرضا بخواد با تعداد زیادی درخواست نامربوط (فرضا درخواست ثبت نام) برنامه رو دچار اختلال بکنه.

    پس من فکر می کنم CSRF رو میشه با Captcha خنثی کرد ولی اطمینان از فرستاده شدن درخواست توسط انسان از طریق CSRF Token ممکن نیست.

  40. #80

    نقل قول: آموزش Laravel 5

    استفاده از میان افزار رو درک نکردم میشه توضیح بدین مقدار پارامترها رو از کجا دریافت میکنه؟ چطوری بهش پاس میدیم؟
    مثل همین age<200 که نوشتین؟ این مقدار age رو کجا بهش پاس بدیم؟ میشه تو url هم اینکارو کرد؟؟
    ممنون

صفحه 2 از 3 اولاول 123 آخرآخر

تاپیک های مشابه

  1. درخواست آموزش فریم ورک laravel
    نوشته شده توسط Tarragon در بخش PHP
    پاسخ: 16
    آخرین پست: چهارشنبه 02 بهمن 1392, 00:17 صبح
  2. آموزش: آموزش نصب laravel بر روی wamp
    نوشته شده توسط sorroshsaket در بخش PHP
    پاسخ: 0
    آخرین پست: یک شنبه 22 دی 1392, 09:53 صبح
  3. آموزش سی شارپ
    نوشته شده توسط ehsan-ets در بخش C#‎‎
    پاسخ: 15
    آخرین پست: پنج شنبه 27 اردیبهشت 1386, 19:16 عصر
  4. آموزش کامل ASP.Net
    نوشته شده توسط mostafa_pk در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: چهارشنبه 22 شهریور 1385, 18:20 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •