تالار گفتمان nCIS.ir

نسخه‌ی کامل: درست کردن لینک بر اساس نام مستعار
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام 
من می خوام لینکم رو با نام مستعار درست کنم همانند جوملا چطوری می تونم این کار رو انجام بدم ؟
سوال دوم اینکه من می خوام برای بخش مدیریت و سایت از یه لاگین استفاده کنم و کد زیر رو به این منظور در قسمت مدیریت گذاشتم

if(Yii::app()->user->isGuest)
			$this->redirect(array('application/site/login'));
لطفاً بیشتر توضیح بدین. اگه منظورتون اینه که لینکها با ساختار controller/action نباشن، میتونید با urlManager کار کنید. مثلاً با این تنظیمات توی بخش rules توی کامپوننت urlManager در config/main.php لینکهای site/login به sign-in تغییر خواهد کرد:
'sign-in' => 'site/login',

درمورد دوم هم توی فایل ماژول خودتون میتونید Yii::app()->user->loginUrl رو با آدرس جدید مقداردهی کنید تا بطور خودکار وقتی وارد بخش لاگین میشن، از یه آدرس دیگه برای لاگین استفاده بشه:
public function init()
{
    Yii::app()->user->loginUrl = 'application/site/login';
}
نه استاد بحث کنترلر و اکشن نیست
در جوملا ما یه قسمت عنوان داریم و یه نام مستعار برای مطالب
قسمت عنوان هرچی بود مهم نیست ولی اگر نام مستعار را پر کنیم می تونیم از اون در url استفاده کنیم بعنوان مثال
میاد و لینک رو اینطوری نمایش میده
mysite/news/29-abzar.html
نام ابزار اون نامی هست که ما وارد کردیم
آهان خوب اینو تو پکیج پیشرفته توضیح دادم. یه فیلد توی دیتابیس درست میکنید به اسم urlkey و متد ویو رو این شکلی درست میکنید:
public function actionView($id, $urlkey = null)
{
    // ...
}
بعد لینکها رو اینطوری میسازین:
Yii::app()->createUrl('news/view', array('id'=>$model->id, 'urlkey'=>$model->urlkey));

توی urlManager هم این شکلی کار میکنید:
'news/<id:d+>-<urlkey:w+>'=>'news/view',
استاد این کد رو هم زدم
Yii::app()->user->loginUrl = 'application/site/login';

باز همون صفحه سفید رو میاره
خواسته تون رو دقیق بگید.
به احتمال زیاد مشکل از جای دیگه هستش بهتره error log رو بررسی کنید ممکنه یه خطای دیگه داشته باشه. اگه مشکل فقط از آدرس دهی باشه خطایی مثل 404 یا 403 میده. میتونید یکبار بدون تغییر آدرس تست کنید.
اگه صفحه سفید میاد، این کدها رو اول index.php اضافه کنید ببینید چه خطایی دارین:
error_reporting(E_ALL);
ini_set('display_errors', 'On');