yang saya mo tanyakan, gimana sih menghubungkan menu ke database? soalnya saya udah ikutin tutorialnya dan gak ada masalah, tapi saya masih bingung menghubungkan menu dengan database, maksud saya supaya bisa membuat website yang dinamis.
Menghubungkan menu ke database di sini kaya gimana, masbro? Mungkin bisa diperjelas pertanyaannya? Lebih bagus lagi kalau ada contoh kasus dan kodenya.
maksud sya ini gan, contoh nya blog demo dari yii, kalau tidak login maka menu sidebarnya tidak muncul, tapi sebaliknya kalau udah login baru menu sidebarnya ada, itu aturnya dimana ya?
Widget UserMenu-nya sudah dibuat gan? Kalau gak salah ada di folder ‘protected/components’.
Ngemeng2 kalau agan ngikutin tutorial blog dari Yii, setau ane hasil akhirnya bisa diliat di folder ‘demos/blog’. Bisa bandingkan ke situ jika ada yang salah.
tp mo tnya lagi dunk gan, klo cara bikin halaman login menjadi halaman pertama, gmn ya? jadinya kayak facebook gitu, orang musti punya username dan password dulu bru bisa login…
iya gan login form yii… gan sya masukin kode ini <?php echo $this->renderPartial(‘LoginForm’, array(‘model’=>$model)); ?> di layout/main.php tapi munculnya erorr ini : Parse error: syntax error, unexpected T_PUBLIC in C:\xampp\htdocs\haleluyayii\protected\controllers\SiteController.php on line 12 sedangkan line 12 itu fungsi yg lain…atau di model dan controlernya jg ada yg diubah?
public $defaultAction = 'login';
}
/**
* Declares class-based actions.
*/
public function actions()
{
return array(
// captcha action renders the CAPTCHA image displayed on the contact page
'captcha'=>array(
'class'=>'CCaptchaAction',
'backColor'=>0xFFFFFF,
),
// page action renders "static" pages stored under 'protected/views/site/pages'
// They can be accessed via: index.php?r=site/page&view=FileName
'page'=>array(
'class'=>'CViewAction',
),
);
}
/**
* This is the default 'index' action that is invoked
* when an action is not explicitly requested by users.
*/
public function actionIndex()
{
// renders the view file 'protected/views/site/index.php'
// using the default layout 'protected/views/layouts/main.php'
$this->render('index');
}
/**
* This is the action to handle external exceptions.
*/
public function actionError()
{
if($error=Yii::app()->errorHandler->error)
{
if(Yii::app()->request->isAjaxRequest)
echo $error['message'];
else
$this->render('error', $error);
}
}
/**
* Displays the contact page
*/
public function actionContact()
{
$model=new ContactForm;
if(isset($_POST['ContactForm']))
{
$model->attributes=$_POST['ContactForm'];
if($model->validate())
{
$name='=?UTF-8?B?'.base64_encode($model->name).'?=';
$subject='=?UTF-8?B?'.base64_encode($model->subject).'?=';
$headers="From: $name <{$model->email}>\r\n".
"Reply-To: {$model->email}\r\n".
"MIME-Version: 1.0\r\n".
"Content-type: text/plain; charset=UTF-8";
mail(Yii::app()->params['adminEmail'],$subject,$model->body,$headers);
Yii::app()->user->setFlash('contact','Thank you for contacting us. We will respond to you as soon as possible.');
$this->refresh();
}
}
$this->render('contact',array('model'=>$model));
}
/**
* Displays the login page
*/
public function actionLogin()
{
$model=new LoginForm;
// if it is ajax validation request
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
// collect user input data
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if($model->validate() && $model->login())
$this->redirect('index.php?r=user/dashboard');
}
// display the login form
$this->render('login',array('model'=>$model));
}
public function actionAdminLogin()
{
$model=new LoginForm;
// if it is ajax validation request
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
// collect user input data
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if($model->validate() && $model->login1())
if(Yii::app()->user->profile==1)
{
$this->redirect('index.php?r=admin/dashboard');
}
else{
$this->redirect('index.php?r=user/dashboard');
}
}
// display the login form
$this->render('login',array('model'=>$model));
}
/**
* Logs out the current user and redirect to homepage.
*/
public function actionLogout()
{
Yii::app()->user->logout();
$this->redirect(Yii::app()->homeUrl);
}
Gan, tutup kurung yang di deklarasi itu untuk akhiran deklarasi kelas. Tinggal dihapus aja.
class SiteController extends Controller
{
public $defaultAction = 'login';
/**
* Declares class-based actions.
*/
public function actions()
..... (kode yang laen)
}
gan sya udh coba hapus tapi ttep eror…trs sya coba hapus tanda kurung di kode ini class SiteController extends Controller
{
public $defaultAction = ‘login’; erorr nya hilang tapi halaman login nya gak muncul, jadinya kayak biasa aja langsung tampil index nya. kira2 apa lg yg salah ya gan?
Tanda kurung yang dihapus itu yang di bawah deklarasi $defaultAction, gan. Nanti struktur kodenya jadi mirip dengan yang ane posting sebelumnya.
View untuk login-nya udah dibuat? Agan akses halaman index itu dari ‘localhost/(nama aplikasi)/’ atau ‘http://localhost/(nama aplikasi)/index.php?r=site/index’? Kalau agan mau supaya halaman ‘http://localhost/(nama aplikasi)/index.php?r=site/index’ hanya bisa diakses setelah login, ya tinggal tambahin accessRules:
/**
* @return array action filters
*/
public function filters()
{
return array(
'accessControl',
);
}
/**
* Specifies the access control rules.
* This method is used by the 'accessControl' filter.
* @return array access control rules
*/
public function accessRules()
{
return array(
array('allow',
'actions'=>array('login'),
'users'=>array('*'),
),
array('allow',
'actions'=>array('index'),
'users'=>array('@'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
Kalo sudah pake accessRules, sepertinya sih defaultAction-nya dihilangkan juga gpp, gan.
sya akses halaman index itu dari 'localhost/(nama aplikasi)/. gan sya masukin kode yang ini udah ok gan. tapi yang hanya bisa diakses setelah login adalah halaman home, about, contact. ketika saya bikin database yang baru ternyata itu gak otomatis ya gan? sya harus nambahin koding apa ya di database sya yg baru supaya diakses setelah login?
Ane gak ngerti ini maksudnya apa? Mungkin agan mau tambahin modul baru dengan tabel dari database? Kalo mau gitu ya paling generate dulu kodenya pake Gii.
gan trims ya udh mau bantuin ane…mo tnya lg dunk, ane kan lagi bkin database siswa, gimana caranya nambahin foto di setiap siswa ya? jadinya ada fasilitas upload foto di setiap nama siswa, bantu dunk gan?
Gan, klo mo nanya untuk topik yang berbeda sebaiknya bikin thread baru.
Kalo ane boleh saranin (just saran nih, ya ), sebelum posting di forum mendingan cari2 di Google dulu. Biasanya untuk topik2 yang umum udah ada yang buat tutorial ato postingannya. Untuk yang upload foto, contohnya, bisa baca di artikel ini.