اموزش لاراول
نوشته شده توسط : علی پور

نکته : کدهایی که تو کلاس این دو جور استفاده شدند را در ادامه مطلب توضیح خواهم بخشید پس نگران نباشید و تنها آنها را وارد نمائید .

وارد
کردن اطلاعات به جداول دیتابیس با استفاده از Seeding :

طراحی سایت در مشهد
ما از یک کلاس به اسم PostCommentSeeder برای مالامال کردن جداول posts و comments استعمال می کنیم .

نکته : برای اجرای Seed از کد php artisan db:seed در ترمینال به کار گیری فرمائید .

کد
PostCommentSeeder :

use
Illuminate\Database\Seeder; use
Illuminate\Database\Eloquent\Model; use
App\post; use
App\Comment;
class
PostCommentSeeder extends Seeder {

public function run()
{ $content = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit .
Praesent vel ligula scelerisque, vehicula dui eu, fermentum velit .
Phasellus ac ornare eros, quis malesuada augue . Nunc ac nibh at mauris dapibus fermentum .
In in aliquet nisi, ut scelerisque arcu .
Integer tempor, nunc ac lacinia cursus,
mauris justo volutpat elit, eget accumsan nulla nisi ut nisi . Etiam non convallis ligula .
Nulla urna augue, dignissim ac semper in, ornare ac mauris . Duis nec felis mauris .';

for( $i = 1 ; $i <= 20 ; $i++ )
{
$post = new Post;
$post->title = "Post no $i";
$post->read_more = substr($content, 0, 120);
$post->content = $content;
$post->save();

$maxComments = mt_rand(3,15);
for( $j = 1 ; $j <= $maxComments; $j++)
{
$comment = new Comment;
$comment->commenter = 'xyz';
$comment->comment = substr($content, 0, 120); $comment->email = 'xyz@xmail .com';

$comment->approved = 1;
$post->comments()->save($comment);
$post->increment('comment_count');
}
}
} }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

use
Illuminate\Database\Seeder; use
Illuminate\Database\Eloquent\Model; use
App\post; use
App\Comment;
class
PostCommentSeeder extends Seeder {

public function run()
{ $content = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit .
Praesent vel ligula scelerisque, vehicula dui eu, fermentum velit .
Phasellus ac ornare eros, quis malesuada augue . Nunc ac nibh at mauris dapibus fermentum .
In in aliquet nisi, ut scelerisque arcu .
Integer tempor, nunc ac lacinia cursus,
mauris justo volutpat elit, eget accumsan nulla nisi ut nisi . Etiam non convallis ligula .
Nulla urna augue, dignissim ac semper in, ornare ac mauris . Duis nec felis mauris .';

for( $i = 1 ; $i <= 20 ; $i++ )
{
$post = new Post;
$post->title = "Post no $i";
$post->read_more = substr($content, , 120);
$post->content = $content;
$post->save();

$maxComments = mt_rand(3,15);
for( $j = 1 ; $j <= $maxComments; $j++)
{
$comment = new Comment;
$comment->commenter = 'xyz';
$comment->comment = substr($content, , 120); $comment->email = 'xyz@xmail .com';

$comment->approved = 1;
$post->comments()->save($comment);
$post->increment('comment_count');
}
}
} }


for نخستین برای به وجود آوردن پست های مختلف بدون نیاز به تنظیمات خاصی هست و حلفه داخلی هم مربوط به ساخت کامنت برای آن پست در حالا تولید می شود که کامنت های مختلفی را برای پسته ا قرار می دهد . همچنین در حلقه داخلی بعد از به وجود وارد شدن کامنت فیلد comment_count مربوط به پست آن کامنت را یک واحد ارتقا می دهد .

 

لاراول

 

استفاده
از امر “artisan tinker” در ترمینال
laravel با استعمال از این فرمان یک رابطه تعاملی سهل و آسان را از روش خط امر ترمینال با پروژه تولید می کند که شما می توانید دستورها متفاوت و جالبی را در خط امر استفاده فرمایید .
اجازه دهید چندین مسئله از این امرها را برایتان نمونه بزنم :
┌─[usm4n@usm4n-desktop]―[~]
└─•artisan
tinker >
1
2
3
┌─[usm4n@usm4n-desktop]―[~]
└─•artisan
tinker >
پیدا
کردن یک آیدی با به کارگیری از find()
>$post
= Post::find(2); >$post->setHidden(['content','read_more','updated_at']);
>echo
$post; {"id":"2","title":"Post
no 2","comment_count":"7","created_at":"2014-01-06 09:43:44"} 1
2
3
4
>$post
= Post::find(2); >$post->setHidden(['content','read_more','updated_at']);
>echo
$post; {"id":"2","title":"Post
no 2","comment_count":"7","created_at":"2014-01-06 09:43:44"} محدود
کردن بازیابی رکورد ها با استعمال از take() و skip()
>$post
= Post::skip(5)->take(2)->get(); >foreach($post
as $value) echo "post id:$value->id "; post
id:6 post id:7 1
2
3
>$post
= Post::skip(5)->take(2)->get(); >foreach($post
as $value) echo "post id:$value->id "; post
id:6 post id:7 به کار گیری
از select() و first()
>$post
= Post::select('id','title')->first(); >echo
$post; {"id":"1","title":"Post
no 1"} 1
2
3
>$post
= Post::select('id','title')->first(); >echo
$post; {"id":"1","title":"Post
no 1"} به کارگیری
از where() با select()
>$post
= Post::select('id','title')->where('id','=',10)->first(); >echo
$post; {"id":"10","title":"Post
no 10"} 1
2
3
>$post
= Post::select('id','title')->where('id','=',10)->first(); >echo
$post; {"id":"10","title":"Post
no 10"} تصاحب کردن
مشخصات یک فیلد کامنت از یک پست
>$post
= Post::find(4); >echo
$post->comments[0]->commenter; xyz
1
2
3
>$post
= Post::find(4); >echo
$post->comments[]->commenter; xyz
ساخت
در دست گرفتن ها در لاراول ما در اختیار گرفتن ها را با توسعه و گسترش کلاس Controller که در دایرکتوری (app/http/controllers) قرار داراست تولید می کنیم . تمامی در دست گرفتن های به‌وجود آمده در (app/http/controllers) قرار می گیرند .

نکته : لاراول هیچ محدودیتی در ساختار دایرکتوری خودش ندارد، بسط دهندگان می توانند به هر شکلی که می خواهند دایرکتوری لاراول را مجددا تنظیم کنند .

یک
مثال از در دست گرفتن معمولی :
namespace App\Http\Controllers;
use . . .
//file: app/Http/controllers/IndexController .php

class
IndexController extends Controller {

public function showIndex()
{ // generates response from index .blade .php

return view('index');
} }

//file: app/Http/routes .php
//registering
route to controller actions
get('index','IndexController@showIndex');

//In
general get('route .name','SomeController@someAction');
post('route .name','SomeController@someAction');
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
namespace App\Http\Controllers;
use . . .
//file: app/Http/controllers/IndexController .php

class
IndexController extends Controller {

public function showIndex()
{ // generates response from index .blade .php

return view('index');
} }

//file: app/Http/routes .php
//registering
route to controller actions
get('index','IndexController@showIndex');

//In
general get('route .name','SomeController@someAction');
post('route .name','SomeController@someAction');
براین اساس هر action در درون در اختیار گرفتن ها دارنده حدافل یک مسیر در فایل app/http/routes .php است . همینطور در برخی مواقع ما با قرار دادن پیشوند به اولیه هر action بصورت معمولی مسیر دلخواه را می سازیم .
به قطعه کد پایین توجه کنید :
namespace App\Http\Controllers;
use . . .

class
IndexController extends Controller {

public function getAction()
{
//get request handling
}
public function postAction()
{
//post request handling
} }

//registering
route Route::controller('index','IndexController);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace App\Http\Controllers;
use . . .

class
IndexController extends Controller {

public function getAction()
{
//get request handling
}
public function postAction()
{
//post request handling
} }

//registering
route Route::controller('index','IndexController);
برای ثبت مسیر برای هر کار در در اختیار گرفتن یک پیشوند برای هر فعالیت قرار دادیم و با به کارگیری از Route::controller(‘index’,’IndexController) بطور قلم مسیر دهی ها را با توجه به آن پیشوندها خویش برنامه انجام می دهد .

یک‌سری
نکته :
بطور معمول هر action با یک view همپا می‌باشد که این view کار نمایش دادن داده ها به استفاده کننده را انجام می دهد .
وقتی که ما یک آرایه را با به کارگیری از return برمی گردانیم، این آرایه بطور قلم با JSON کدگذاری و به ما نشان داده می شود .
ما با استفاده از متد nest() می توانیم یک view را به یک متغیر نسبت دهیم .
ایجاد
Controller ها برای برنامه ما در قدم اولیه برای آغاز در دست گرفتن BlogController را می سازیم که وظیفه رسیدگی به درخواست نخستین را دارد : نشان دادن برگه اصلی / محتوای کلی وبسایت، قسمت جستجو و سناریو کاوش را بر عهده دارااست . در گام بعد به ترتیب مسئولیت رسیدگی به عملیات CRUD پست ها و ایده ها را به PostsController و CommentsController می دهیم .

BlogController
کد ذیل وابسته به کنترل BlogController میباشد که در نصیب app/http/Controllers/BlogController .php
قرار داراست :
namespace App\Http\Controllers;
use
App\Http\Requests; use
App\post; use
Illuminate\Http\Request;
class
BlogController extends Controller {


/**
* select 10 post
* @return Home page
*/
public function getIndex()
{
$posts = post::orderBy('id', 'desc')->paginate(10);
return view('home')->nest('content', 'index', compact('posts','title'))
->with('title','Home Page | Laravel 5 Blog');

}

/**
* @param request serch
* @return result serch
*/
public function getSearch(Request $request)
{
$searchTerm = $request['s'];

$posts = Post::whereRaw('match(title,content) against(? in boolean mode)', [$searchTerm])
->paginate(10);
$posts->appends(['s' => $searchTerm]);
return view('home')
->nest('content', 'index', ($posts->isEmpty()) ? ['notFound' => true] : compact('posts')) ->with('title', 'Search: ' .
$searchTerm);;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
namespace App\Http\Controllers;
use
App\Http\Requests; use
App\post; use
Illuminate\Http\Request;
class
BlogController extends Controller {


/**
* select 10 post
* @return Home page
*/
public function getIndex()
{
$posts = post::orderBy('id', 'desc')->paginate(10);
return view('home')->nest('content', 'index', compact('posts','title'))
->with('title','Home Page | Laravel 5 Blog');

}

/**
* @param request serch
* @return result serch
*/
public function getSearch(Request $request)
{
$searchTerm = $request['s'];

$posts = Post::whereRaw('match(title,content) against(? in boolean mode)', [$searchTerm])
->paginate(10);
$posts->appends(['s' => $searchTerm]);
return view('home')
->nest('content', 'index', ($posts->isEmpty()) ? ['notFound' => true] : compact('posts')) ->with('title', 'Search: ' .
$searchTerm);;
}
}
وقتی که مسیر خویش را با Route::controller() به فیس Route::controller(‘/’,’BlogController’) ثبت کنیم، getIndex() از مسیر نقشه برداری می کند . بعد از آن از این‌که آدرس کاغذ کلیدی تارنما را اجرا کردیم این action کار می نماید و محتوای موضوع نظر را به شما سناریو می دهد . در درون getIndex() با استفاده از مدل post پست های خویش را بازیابی می کنیم . اکنون این عمل با استفاده از orderBy(‘id’, ‘desc’) که سبب ساز مرتبط شدن پست ها بر پایه شماره id و همینطور برای این که تمام مطالب در یک برگه نباشد از متد paginate()استفاده می کنیم و عدد ۱۰ را برای آن در نظر میگیریم تا در هر برگه تنها ۱۰ عدد پست نمایش داده شود . سپس از بازیابی داده ها آن را داخل متغیر $posts قرار می دهیم تا در بخش view بتوانیم با استعمال از یک حلقه به راحتی محتوای هر پست را قطع کنیم و سناریو دهیم (قسمت view را در آتی توضیح خواهم داد) . خب ما با به کارگیری از return و متد view() برگه Home .blade .php را بازیابی و با متد nest()اطلاعات موضوع نظر را برایش می فرستیم .

مطالب
دیگر : مقایسه php با Python : مقایسه تمام خصوصیت ها اکنون با به کارگیری از getSearch() امکان کاوش در وبسایت را برای کاربران به وجود می آوریم . از گونه Post برای ارسال کوئری برای کاوش استفاده می کنیم و همچنین از متد whereRaw() برای پیدا کردن محتوای زمینه نظرمان بر مبنا شرایط و گونه کاوش متنی که مد نظرمان می‌باشد استعمال می کنیم و در آخر هم برای برگه بندی نتایج کاوش از متد paginate() بهره می بریم . سایر کدها هم برای ارسال و نمایش داده ها بازیابی گردیده به کارگیری می شوند .





:: برچسب‌ها: طراحی سایت در مشهد ,
:: بازدید از این مطلب : 346
|
امتیاز مطلب : 0
|
تعداد امتیازدهندگان : 0
|
مجموع امتیاز : 0
تاریخ انتشار : سه شنبه 7 خرداد 1398 | نظرات ()
مطالب مرتبط با این پست
لیست
می توانید دیدگاه خود را بنویسید


نام
آدرس ایمیل
وب سایت/بلاگ
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

آپلود عکس دلخواه: