نقل قول:
نوشته شده توسط
MMSHFE
خوب Yii از این نظر خیلی منعطف تر و بهتر عمل کرده (بنظر من).
خیلی زود قضاوت کردید
نقل قول:
نوشته شده توسط
MMSHFE
بطور پیشفرض توی Yii نسخه 1.1 از BluePrint CSS و توی نسخه 2 از Bootstrap برای قالب استفاده شده و موتور قالب خاصی به کار نرفته هرچند به راحتی میتونه با Smarty و RainTPL و Twig و... ادغام بشه
شما استفاده از یک کتابخونه css رو مزیت فریمورک میدونید؟؟؟
لاراول هم اونجاهایی که html تولید میکنه، در صورت نیاز از شیوه نامه های bootsrtap استفاده کرده
همونطور که گفتید yii موتور قالب داخلی نداره. ضمنا لاراول هم میتونه با دیگر موتورهای قالب کار کنه
پس میبینید که yii جایی بهتر عمل نکرده و حتی به قول خودتون کم هم آورده تا اینجا
و اما ادامه
1- تم (Theme)
نقل قول:
نوشته شده توسط
MMSHFE
توی فایل تنظیمات میتونیم تم رو انتخاب کنیم (توی Yii هر تم میتونه فایلهای ویوی خاص خودش رو داشته باشه و به راحتی با تغییر یک پارامتر توی فایل تنظیمات، میشه تم رو عوض کرد)
و
نقل قول:
نوشته شده توسط
bestirani2
در کل تا اینجا به نظرم دو فریم ورک برابرند ولی Yii چون از Theme پشتیبانی میکنه در این بخش پیروز میدان هست.
به قول خودتون: کدهای لاراول رو بسپارید به اهلش!، نه تنها لاراول از تم ها پشتیبانی میکنه، بلکه میتونید چند مسیر رو برای جستجو ویوها مشخص کنید
'paths' => array(__DIR__.'/../views', __DIR__.'/../theme1', __DIR__.'/../theme2'),
که برای رندر کردن یک ویو یا لیوت درون مسیرهای بالا سرچ رو انجام میده و برای عوض کردن تم هم کافیه نام پوشه تم جدید رو به جای پوشه تم پیشفرض بگذاریم
2- فایلهای Layout
نقل قول:
نوشته شده توسط
MMSHFE
توی هر کنترلر (یا کنترلر والد یعنی protected/components/Controller.php) میتونیم یک فیلد public بگذاریم که مشخص میکنه از چه layout خاصی باید استفاده بشه
مشخص کردن لیوت در کنترلر
class UserController extends BaseController {
protected $layout = 'layouts.master';
...
}
ضمناً امکان تنظیم کردن layout بصورت جداگانه برای هر اکشن هم وجود داره.
public function index()
{
$this->layout = 'layouts.guest';
}
و حتی میتوان نام مستعار برای ماژول ها و یا تم ها نسبت داد که ویو را متناسب با نوع مازول و ... لود کرد
View::make('moduleName::viewName');
نقل قول:
نوشته شده توسط
MMSHFE
کمی بنظر ممکنه پیچیده بیاد ولی دقت کنید: این یک فایل HTML ساده است! یعنی فایلهای Layout در Yii یک قالب ساده HTML هستن که محتوای خروجی viewها رو میتونید در محل دلخواه با دستور زیر نمایش بدین
مگر در لاراول لیوت html غیر ساده هست؟!
در لاراول میتونید به جای یک content$، چند به اصطلاح متغیر داشت، حالا به چه درد میخورند؟، مثلا بدون عوض کردن لیوت میشه منوها رو کم یا زیاد یا عوض کرد، فوتر، کپی رایت و هر جایی از صفحه رو، با این نکته که موتور بلید روی همه قسمت ها پردازش انجام میده! و صرفا متغیر php خام نیستند مثل yii!
3- فایلهای View
در لاراول از داخل ویو ها هم امکان ست کردن لیوت وجود داره، ضمن اینکه ویو میتونه به تمام قسمت های تعریف شده در لیوت دسترسی داشته و تغییر هم اعمال کنه که توی مورد قبل گفته شد
@extends('layouts.master')
@section('head')
....
@stop
@section('content')
...
@stop
@section('footer')
...
@stop
ویو ها چنانچه دارای پسوند ساده php باشند، بدون بلید و اگر دارای پسوند blade.php باشند با موتور بلید رندر میشند
برای رندر کردن فقط از نام ویو یا لیوت استفاده میشه و چنانچه ویو داخل پوشه ای بود، نام پوشه با یک نقطه قبل از نام ویو میاد
لاراول تمام مسیرهای تنظیم شده برای ویوها رو میگرده، همچنین مسیر تم رو، میشه از نامهای مستعار هم در آدرس دهی ویو ها استفاده کرد
View::make('index');
View::make('content.index');
View::make('content.crud.index');
View::make('alias::index');
4- استفاده فایلهای Layout از هم (Layoutهای واسط)
فراخوان ویو دیگه و یا ارسال پارامتر به ویو و فراخوانی
(توضیحات همانند پست شما)
@include('viewName')
//or
@include('viewName', array('some'=>'data'))
5- ارتباط بین Viewها با هم
(توضیحات همانند پست شما)
$view = View::make('user.login');
6- ارسال پارامتر به ویو توسط کنترلر
روش اول توسط کنترلر و اکشن
class UserController extends BaseController {
protected $layout = 'layouts.master';
public function showProfile()
{
$this->layout->content = View::make('user.profile');
}
}
روش دوم ارسال برای خود ویو
x$ در ویو ایجاد میشود
View::make('index', array('x' => 'ali'));
روش سوم ارسال برای خود ویو
تعداد with ها نا محدود
View::make('index')
->with('x', 'ali')
->with('some', 'date');
روش چهارم ارسال برای خود ویو
View::make('index')
->withX('ali')
->withSome('date');
روش پنجم به اشتراک گذاشتن داده ها در تمام ویوها
View::share('name', 'Steve');
روش ششم ارسال یک ویو به یک ویو دیگه به عنوان زیر-ویو
View::make('mainView')->nest('variable', 'childView', $data);
نقل قول:
نوشته شده توسط
MMSHFE
شاید بگین هنوز به این چیزها نرسیده بودیم و باز من جلو جلو جواب دادم ولی خواستم همین اول کار بگم وارد این مبحث نشین چون لاراول رسماً کم میاره. برای مثال معادل همین امکانات رو خوشحال میشم بدونم لاراول چطوری پیاده سازی میکنه.
امیدوارم به جوابتون رسیده باشید!
حالا خودتون بگید، لاراول کم آورده یا یی! البته من علاقه دارم به لاراول، ولی عاشق تعصبیش نیستم!
هر کس که نگاه تعصبی نداشته باشه، گواهی میده که لاراول اینجا هم سرتر هست
اگر چه ساختارهای کنترلی و ناظرهای ویو و ... هنوز مونده که اونا رو هم خواهم گفت