مدرسه آنلاین پیبانُ

زیر مجموعه ای از وب سایــت بزرگ pibano.com

مدرسه آنلاین پیبانُ

زیر مجموعه ای از وب سایــت بزرگ pibano.com

در محل پروژه لاراول عبارت php artisan serve را تایپ کنیم در cmd.

در واقع سرور مربوط به لاراول را استارت میکنیم.

در این صورت وقتی به localhost:8000 در مرورگر رویم پروژه باز خواهد شد.

  • امیررضا ابراهیمی

Route::get('loginAdmin', function () {

    return view('loginAdmin');

});

  • امیررضا ابراهیمی

برای سئو پسند بودن و ندادن آی دی به هکر ها:

ابتدا به تیبل مقالات یک ستون با نام slug و تایپ varchar و Length/Values یا طول 255 یا... و اینکه باید یونیک باشد، اضافه می کنیم.

حال در روت به جای آیدی اسلاگ را میفرستیم (البته این فقط یه اسمه و خیلی مهم نیست):

Route::get('/article/{slug}', "ArticleController@showSingleArticle");

  • امیررضا ابراهیمی

پاک کردن کش لاراول میریم تو پوشه پروژه و cmd:

php artisan view:clear

در این پوشه ان:

storage\framework\views ...و

پاک کردن کانفیگ لاراول میریم تو پوشه پروژه و cmd:

php artisan config:clear

  • امیررضا ابراهیمی

در پوشه resources\lang از پوشه en یک کپی گرفته و نامش را fa می نویسیم.

سپس در پوشه config فایل app.php را باز کرده و 'locale' را از en به fa تغییر می دهیم.

حال در پوشه fa م توانیم پارامتر های دوم را فارسی یادداشت کنیم ( بعضی جاهایش با عباراتی مانند seconds: مواجه می شویم که آن ها را همان گونه یادداشت می کنیم.

'throttle' => 'Too many login attempts. لطفا try again in :seconds seconds.',

مثلا در validation.php در بخش 'custom' می توانیم پیام ها را برای هر فیلد شخصی سازی و خاص کنیم مثلا:

'custom' => [

'title' => [

'max' => 'عنوان نباید بیش از :max کارکتر باشد',

],

],

  • امیررضا ابراهیمی

در صورتی که بخواهیک کد هایخط پایین اجرا نشوند از این عبارت استفاده میکنیم:

Die();

  • امیررضا ابراهیمی

یه روش هست که می توانیم خودمان ریکوئست های های خاص بسازیم و ولیدیتورم در آنجا کنترل کنیم (مربوط به چند خط پایین - اون گلوباله و عمومی) ولی روش ساده تر مثل پایین اینکه در همان کنترلر و کلاسی که در روت برای ارسال آن فرم است تعریف کردیم ولیدیتور را اضافه کنیم:

  • امیررضا ابراهیمی

در آن کنترلری که کامنت هارا به ویو میفرستیم (در این نمونه که ما آن را در آرتیکل کنترلر به این صورت قرار دادیم):

$comments = Comment::where("article_id", $id)->get();

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

$comments = Comment::where("article_id", $id)->paginate(5);

حال در ویو آنجایی که میخواهیم اگر تعداد زیاد شد شماره صفحه ها زیاد شود: معمولا زیر کامنت ها ( داخل سکشن کامنت بعد از اندفوریچ ) :

{{ $comments->render() }}

اولی همون ظرف لیست کامنت هاس که در چند خط بالا تعریف شده و دومی متد است.

  • امیررضا ابراهیمی

برای این منظور بخش MAIL را در فایل env. تنظیم می کنیم.

اطلاعاتش را می توان از میزبان ایمیل گرفت.

  • امیررضا ابراهیمی

@if(Auth::check())

به جای check می توان از متد user نیز استفاده کرد که این کار را می کند: یوزری اگر لاگین کرده بود اطلاعاتش را برگردان، اگر نکرده باشه نمیشه!

<form ...>

</form>

@else

<div class="alert alert-info">

<p>

برای کامنت باید وارد شوید

</p>

<a href="{{ url('/login') }}" class="btn btn-link">

ورود

</a>

</div>

@endif

نکته: از guest و endguest نیز میتوان استفاده کرد.

  • امیررضا ابراهیمی

نمایش کامنت ها:

php artisan make:migration create_comments_table :

Schema::create('comments', function (Blueprint $table) {

$table->id();

$table->string('title');

$table->text('body');

$table->unsignedBigInteger('article_id');

$table->unsignedBigInteger('user_id');

$table->timestamps();

$table->foreign('article_id')->references('id')->on('articles')->onDelete('cascade');

$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

});

  • امیررضا ابراهیمی

این عبارت را داخل فرم ها قرار می دهیم، مثال:

<form method="POST" action="{{ route('register') }}">

@csrf

...

همان سی اس آر اف توکن (یه ایمپوت مخفی) (کسی غیر از صفحه خودمون نتونه ریکوئست بفرسته) (فقط از طریق فرم خودمون بتونه لاگین کنه)

  • امیررضا ابراهیمی

در صفحه register در زیر div email قبل از div password:

<div class="form-group row">

<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>

...

</div>

اینجا

<div class="form-group row">

<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>

...

به این صورت یک اسکریپت مینویسیم:

  • امیررضا ابراهیمی

اولا آدرس بوت استرپ را به صورت دستی از سایت بوت استرپ 3 مورد و یه موردم از سایت   jquery.com در مستر پیج وارد میکنیم تا مشکل لود نشدن بوت استرپ برطرف شود.

به جای:

<!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>

and

<!-- Styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">

 

در مستر پیج هر کجا خواستیم قالب خاص اضافه شود:

  • امیررضا ابراهیمی

ابتدا: Install Node.js, npm, and stay up-to-date

سپس در cmd و در پوشه سایت، به ترتیب:

composer require laravel/ui

php artisan ui vue --auth
  • امیررضا ابراهیمی

در ادامه مطلب می توانید مثالی از مطالب گفته شده را در قالب پروژه ای با ویژگی های زیر مشاهده کنید:

نمایش مقالات با نام نویسنده.

(دیتابیس و اجزای تیبل ها (مقالات،دسته بندی ها و نام نویسنده) دستی وارد شده اند.)

  • امیررضا ابراهیمی

بهترین مدل که ایموجی ها را هم ساپورت می کند: utf8mb4_unicode_ci

  • امیررضا ابراهیمی

دسترسی - این تابع به پوشه public اشاره می کند، ادامه آدرس باید نوشته شود. مثال:

<img src="{{ asset('/images/bg.jpg') }}" alt="عکس">

هنگام آدرس دهی برای css نیز از همین روش استفاده می کنیم.

در فایل css ساخته شده چون خود فایل asset است میتوان اینگونه آدرس داد. مثال:

background: url('../images/bg.jpg');

تابع url نیز به همین شکل است با این تفاوت که به دامنه اشاره می کند. مثال:

<a href="{{ url('article') }}/{{ $article->id }}">
  • امیررضا ابراهیمی

پوشه public

میتوان پوشه دیگری در آن ساخت و عکس ها را آنجا ریخت.

مثال: public->images

(و css)

  • امیررضا ابراهیمی

ابتدا روتر آن تعریف میکنیم:

Route::get('/users' , 'UserController@getUsers');

سپس به کنترلر رفته و:

use App\User;

...

public function getUsers();

{

     $users = User::get();   (User:همان مدل یوزر)

     return $users;

*: به جای users$ می توان یک ویو را ریترن کرد:

return view('users' , ["users"=>$users]);

(همان users.html)

(پارامتر دوم: ظرف یوز را با اسم یوز بفرست به ویو)

*: در کنترلر ها میتوان بیش از یک فانکشن داشت.

صفحه users.php در view: (داخل body)

<?php

     var_dump($users); آبجکت کاملی از تیبل

>

--------------------------------------------------------------------------------------

<?php

     var_dump($users->toArray()); فقط دیتا

>

  • امیررضا ابراهیمی

ابتدا پورت و نام دیتابیس را در فایل env. تنظیم میکنیم.

برای ساخت تیبل cmd را اجرا کرده و دستور زیر را در آن تایپ می کنیم:

php artisan make:migration create_comments_table

محل ساخته شدن: database--> migrations

داخل تابع up ستون ها مشخص می شوند.

مثال:

$table->bigIncrements('id');

میتوان در پرانتز بعد از نام طول رشته را نیز مشخص کرد. مثال: (500 , 'name')

bigIncrements: اعداد خیلی بزرگ (همون اوتو اینکریمنت - کلید اصلی)

string: همون ورچر

unique: تکراری نپذیر

$table->string('email')->unique();

nullable: میتونه خالی باشه.

$table->timestamp('email_verified_at')->nullable();

تعداد زیادی از این نمونه ها را می توان در سایت لاراول با جست و جوی عبارت laravel migrations مشاهده کرد.

--------------------------------------------------------------------------

رفرنس کردن:

فارنکی ها باید همیشه آنساید (مثبت) باشند در غیر این صورت هنگام مایگرت ارور خواهد داد.

مثال:

$table->unsignedBigInteger('user_id');

$table->foreign('user_id')->references('id')->on('users');

  • امیررضا ابراهیمی

در مسیر پروژه cmd را باز کرده و دستورد زیر را اجرا کنید:

composer update
  • امیررضا ابراهیمی

در صورت اجرای دستور زیر کلیدی به نام username با مقدار x اضافه می شود.

Session::put('username','x');

برای گرفتنش:

echo Session::get('username');
  • امیررضا ابراهیمی
<?php

Route::get('/home' , returnView());

function returnView()

{

     echo "hi";

}

..................................................................................

<?php

Route::get("/home" , function(){

     return "Hi to home";

});

..................................................................................

<?php

Route::get("/" , function(){

     return view('home');

});

همان صفحه اصلی دامنه

home: فایل home.html در پوشه view

 

  • امیررضا ابراهیمی

 

ساخت کنترولر:

php artisan make:controller UserController

مثال:

class...
{

     public function getUsers()

     {

          $names = ['Mehdi' , 'Amir']

          return $names;

     }

}

ساخت میدل ویر:

  • امیررضا ابراهیمی

resources--> views

(و نیز مربوط به زبان وبسایت)

  • امیررضا ابراهیمی

1) روتر: ساخت url آدرس: routes--> web.php

<?php
Route::get( "/users" , "UserController@getUsers" );

2) میدل ویر: بررسی سمی نبودن نامه رئیس: app--> Http--> Middleware

<?php
Route::get( "/users" , "..." )->middleware('test');

test: نام مستعار (توضیح در ادامه پست ها)

3) کنترلر: app--> Http--> Controllers

4) مدل: app

  • امیررضا ابراهیمی

برای کوتاه کردن آدرس دهی در wamp بر روی آیکون آن کلیک کرده و مسیر زیر را دنبال کنید:

Yuor VirtualHosts --> VirtualHost Management

  • امیررضا ابراهیمی

cmd را اجرا کرده و به محل مورد نظر خود برای نصب لاراول بروید، برای این منظور:

cd را تایپ کرده و سپس آدرس مورد نظر خود را تایپ کرده و enter را فشار دهید.

حال عبارت زیر را تایپ کنید:

laravel new name

(به جای name نام سایت خود را وارد کنید!)

  • امیررضا ابراهیمی

ابتدا مطعن شوید که کامپوزر بر روی سیستم شما نصب باشد، برای این منظور:

cmd را اجرا کرده و عبارت composer را وارد کنید.

حال برای نصب لاراول عبارت زیر را در cmd وارد کنید:

composer global require laravel/installer
  • امیررضا ابراهیمی