PDA

View Full Version : فرم ها در yii



minanazari
چهارشنبه 19 شهریور 1393, 14:17 عصر
سلام و خسته نباشید

من تازه کار با فریم وورک yii رو شروع کردم یه سوال در مورد فرم ها داشتم
من یک فرم دارم و می خوام با یک loop چکباکس ایجاد کنم که value های متفاوت داره و با انتخاب هر چک باکس مقدار مورد value در دیتابیس ذخیره بشه اما هر کاری می کنم نمی شه یا اصلا اطلاعات در دیتابیس ذخیره نمی شه و یا مقدار 0 در دیتا میره . امید وارم تونسته باشم سوالم رو درست بپرسم و متوجه شده باشین . اگه راهنماییم کنید خیلی ممنونتون می شم .

MMSHFE
چهارشنبه 19 شهریور 1393, 17:12 عصر
تا وقتی کدتون رو نگذارین نمیشه بفهمیم مشکل چیه. Speak in codes

minanazari
چهارشنبه 19 شهریور 1393, 22:51 عصر
یه هم چین کدی می خوام داشته باشم


for($i=1 ; $i<3 ;$i++){
echo $form->checkBox($model,'user',array('value'=>$i));
}


که با انتخاب هرکدوم مقدار آن در دیتابیس دخیره شود و هم چنین اگر بیشتر از یکی هم انتخاب کرد مقدار تمام چک باکس های انتخابی ذخیره شود. اصلا این روش درست هست یا نه؟

ممنون که جواب سوال رو دادید

MMSHFE
پنج شنبه 20 شهریور 1393, 09:02 صبح
ببینید فکر میکنم مفهوم MVC رو کامل متوجه نشدین. قرار نیست View کار عملیاتی انجام بده (منظورم حلقه های ساده نیست. اعمالی مثل حذف و... منظورمه که وظیفه کنترلره که به مدل دستورش رو بده). الان نمایش این اطلاعات به این شکل کار جالبی نیست. فرض میگیرم شما میخواین فهرست کاربران رو نشون بدین و هرکدوم که تیک خورده باشه و فرم سابمیت بشه، اون کاربر از جدول توی دیتابیس حذف بشه. اول از همه باید ویو رو نمایش بدیم:

کد کنترلر (فرضاً protected/controllers/UserController.php) :

public function actionDelete() {
if(isset($POST['ids'])) {
User::model()->deleteByPk($_POST['ids']);
}
$users = User::model()->findAll();
if(!$users) {
throw new CHttpException(404, 'There is not any user defined.');
}
$this->render('delete', array('users'=>$users));
}

کد View (فرضاً protected/views/user/delete.php) :

<form action="<?php echo Yii::app()->createUrl('user/delete'); ?>" method="post">
<table border="1px" cellpadding="5px" cellspacing="0" width="100%">
<tr>
<th>&nbsp;</th>
<th>ID</th>
<th>Name</th>
</tr>
<?php foreach($users as $user) : ?>
<tr>
<th><input name="ids[]" type="checkbox" value="<?php echo $user->id; ?>" /></th>
<th><?php echo $user->id; ?></th>
<th><?php echo CHtml::encode($user->name); ?></th>
</tr>
<?php endforeach; ?>
</table>
<input type="submit" value="Delete" />
</form>

اگه جایی ابهامی بود بفرمایید بیشتر توضیح بدم. توصیه میکنم چون اولای کار با Yii هستین، خیلی جاها اگه دیدین کار با فرم ساز خودش براتون مشکله، مثل همین نمونه کدی که گذاشتم خودتون دستی فرم رو بسازین.

minanazari
یک شنبه 06 مهر 1393, 09:58 صبح
سلام
ببخشید که دوباره این سوالو می پرسم اما دوباره در این مورد مشکل پیدا کردم ممنون می شم بازم لطف کنید و جوابم رو بدین .

مثلا در model من نوشتم :

public function getcategoryoption(){

return CHtml::listData( TblCategory::model()->findAll(),'id', 'name');

}

و توی view نوشتم :


<div class="row">
<?php echo $form->labelEx($model,'category_id'); ?>
<?php echo $form->dropdownlist($model,'category_id',$model->getcategoryoption()); ?>
<?php echo $form->error($model,'category_id'); ?>
</div>

اما درست کار نمی کنه و مشکل داره اما با تبدیل همین checkboxlist به dropdownlist اطلاعات درست در database دخیره می شه ، میشه بگین مشکل از کجاست ؟

MMSHFE
یک شنبه 06 مهر 1393, 10:06 صبح
کدوم checkboxlist ؟ شما که dropdownlist دارین. ضمناً اینکه میگین درست کار نمیکنه، یک صحبت کلیه. دقیقاً مشخص کنید مشکل چیه که درست کار نمیکنه. به احتمال زیاد داره درست کار میکنه و شما چیز دیگری میخواین که روشتون اشتباهه.

minanazari
یک شنبه 06 مهر 1393, 10:52 صبح
کد من این هست :

<div class="row">
<?php echo $form->labelEx($model,'category_id'); ?>
<?php echo $form->checkboxlist($model,'category_id',$model->getcategoryoption()); ?>
<?php echo $form->error($model,'category_id'); ?>
</div>

منظورم از این که درست کار نمی کنه این هست که با توجه به این که value برای checkbox ها عدد است و با تایید فرم value باید در ستون category_id جدول که آن هم از نوع int است ذخیره شود خطا می دهد و اطلاعات را در دیتا ذخیره نمی کند
category_id must be a number

MMSHFE
یک شنبه 06 مهر 1393, 10:57 صبح
با Firebug چک کنید ببینید واقعاً Valueها عدد ثبت شده یا نه؟ ضمناً نمیدونم چرا برای category_id که یک عدد بیشتر توش نمیشه گذاشت، checkboxlist گذاشتین چون بصورت یک آرایه در میاره checkboxها رو و طبیعتاً array با integer فرق میکنه.

minanazari
یک شنبه 06 مهر 1393, 11:04 صبح
بله value ها به صورت عدد است . دلیل اینکه از checkbox استفاده کردم اینه که اجازه داده بشه تا چند تا از checkbox ها را بتوان انتخاب نمود و هم زمان با submit کردن فرم تما م value های انتخاب شده ذخیره شود