Ini 10 pertanyaannya digabung di 1 halaman ato ditaruh di 10 halaman terpisah (model form wizard)? Kenapa gak pake CActiveForm dan radioButtonList, gan?
Nanti di controller kan nilai jawaban yang dipilih bisa langsung dipake (dengan catatan rules untuk atribut-atribut jawaban sudah didefinisikan di model), ya?
Isinya itu atribut2 yang bakal dimasukkan melalui form. Coba liat2 dulu fungsi rules() di model2 yang sudah ada (dalam direktori ‘protected/models’) aja, gan.
Buat menampilkan pilihan jawabannya, supaya gak usah nulis berulang-ulang. Agan bisa buat seperti ini di model:
public function getOptions()
{
return array(
'A'=>'A',
'B'=>'B',
'C'=>'C',
... (dst.)
);
}
Sudah saya coba, dari View kan mengirimkan variabel $n(seperti yg saya tulis di kode di atas), kan $n itu array 1,2,3, di model udah saya buat juga public $n, tapi ada eror kayak gini :
Jujur ane kurang paham tabel Jawab yang agan bikin kaya gimana. Tapi kalau ane jadi agan, ane bakal memanfaatkan Active Record untuk mengakses datanya. Mungkin kurang lebih kaya gini (pake listData() dan findAll() di method getOptions() punya agan).
Kenapa di controller, gan? Bukannya method getOptions() itu ada di model?
Kalo atributnya udah dimasukkan ke rules (seperti contoh kode ane di atas), jawaban yang dipilih user bisa langsung diakses di controller, seperti ini (sekedar contoh saja, ya):
public function actionCreate()
{
$model = new Question;
if (isset($_POST['Question']))
{
// nilai atribut diset di sini
$model->attributes = $_POST['Question'];
// cek nilai atribut yang sudah diset
var_dump($model->q1, $model->q2);
if ($model->save())
$this->redirect(array('view', 'id'=>$model->id));
}
$this->render('create', array(
'model'=>$model,
));
}
Atau kalau agan mau melakukan kalkulasi jawaban di model juga bisa. Tinggal buat fungsi tambahan saja.