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

نسخه‌ی کامل: تگها (حل شد)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
چطوری میشه مثل وردپرس به هر پست برچسب اختصاص بدیم و موقع ویرایش اونا رو ویرایش کنیم با برچسب زدن مشکل زیادی ندارم ولی با ویرایش برچسب مشکل دارم.یعنی وقتی تیک چک باکس رو برداشتیم و سابمیت کردیم باید اون رکوردها حذف بشن؟ یا comfirmed اونا 0 بشه؟
برای حذف بستگی به سناریوی خودتون داره. توی برخی از پروژه ها برای جدول واسط دیگه فیلد confirmed نمیگذارن و وقتی برچسب رو برمیدارین، باید کاملاً حذف کنید. اما برخی پروژه ها ممکنه به Soft Delete نیاز داشته باشن. مثلاً موقتاً یه برچسب رو نشون ندیم. اینجور جاها میشه confirmed رو صفر کرد.
دستی نمیتونم با CActiveForm چطوری دو تا مدل رو با هم استفاده کنم؟
متوجه منظورتون نمیشم. لطفاً بیشتر توضیح بدین.
برای اینکه یک پست درج کنیم میاییم جدول پست رو new میکنیم و مقادیر $_Post رو بهش میدیم حالا تگها هم باید به فرم اضافه بشن یعنی دو تا مدل میشه به اضافه اینکه موقع ویرایش پست برچسب های قبلی باید تیک داشته باشن.
دقیقا مثل cms وردپرس
شما نباید به این شکل کار کنید. یا میتونید با AJAX تگهای انتخابی رو بفرستین و ذخیره کنین و یا اینکه برای تگها با CActiveForm کار نکنید و با CHtml::dropDownList کار کنید. توی اکشن هم برای مقادیر دریافتی حلقه بسازین و برای هرکدوم یک شئ از کلاس جدول واسطه ایجاد و ذخیره کنید.
وقتی یه پست رو میخواییم ویرایش کنیم چی؟ اگه دراپ دان باشه از کجا بدونیم چه برچسبهایی رو داره؟
فهمیدم باید وقتی دکمه ویرایش رو میزنیم توی یه جدول تگاشو بیاریم و با دکمه حذف کنیم.
به این مثال دقت کنید:

توی کنترلر:
$options = array();
foreach($model->tags as $tag) {
    $options[$tag->id] = array('selected'=>'selected');
}
$tags = CHtml::listData(Tags::model()->findAll(), 'id', 'name');
$this->render('form', compact('model', 'options', 'tags'));

توی ویو:
echo CHtml::dropDownList('Tags[]', null, $tags, array('multiple' => 'multiple', 'options' => $options));
با کمک خاصیت options میتونید برای هر عنصر توی تگ Select خاصیتهای سفارشی ست کنید.