Вопросы новчика

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Вопросы новчика

Сообщение Nafania »

smck87 писал(а):Помогите описать отношения в моделе, никак не врублюсь.
Есть таблички: game, tag, tag_on_game. Таблица tag_on_game связывает таблицы game и tag. Как описать отношение, чтобы модель Game могла получить список тегов из таблицы tags используя связи из tag_on_game?

Таблица tag_on_game имеет такие поля: id, tag_id, game_id.
Я понял, что нужно использовать HAS_MANY through, но как :?

update: вродь понял, так работает

Код: Выделить всё

            'tag_on_game'=>array(self::HAS_MANY, 'TagOnGame', 'game_id'),
            'tags'=>array(self::HAS_MANY, 'Tag', 'game_id','through'=>'tag_on_game'),
 
А TaggableBehavior не лучше использовать ли?
smck87
Сообщения: 133
Зарегистрирован: 2011.01.30, 21:22

Re: Вопросы новчика

Сообщение smck87 »

Nafania писал(а): А TaggableBehavior не лучше использовать ли?
В чем преимущество? С поведениями пока не знаком.
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Вопросы новчика

Сообщение Nafania »

smck87 писал(а):
Nafania писал(а): А TaggableBehavior не лучше использовать ли?
В чем преимущество? С поведениями пока не знаком.
В том, что там уже все готово и вам не надо ничего писать самостоятельно.
gadiy
Сообщения: 6
Зарегистрирован: 2011.09.01, 17:31

Re: Вопросы новчика

Сообщение gadiy »

Капец это все страшно.... слов непонятных цела ахапка и к ним прицем
smck87
Сообщения: 133
Зарегистрирован: 2011.01.30, 21:22

Re: Вопросы новчика

Сообщение smck87 »

gadiy писал(а):Капец это все страшно.... слов непонятных цела ахапка и к ним прицем
чем лучше разбираюсь, тем больше удивляюсь, как я без этого обходился на codeigniter.

Nafania, расширение нашел, спс, пробую :)

update: gadiy, почитал топик с начала, учите по очереди c++, php, codeigniter, а потом yii.
Аватара пользователя
RusAlex
Сообщения: 324
Зарегистрирован: 2010.08.29, 15:30

Re: Вопросы новчика

Сообщение RusAlex »

а codeigniter то зачем ?
Аватара пользователя
timlar
Сообщения: 1382
Зарегистрирован: 2009.09.19, 17:49
Откуда: Украина, Днепропетровск
Контактная информация:

Re: Вопросы новчика

Сообщение timlar »

RusAlex писал(а):а codeigniter то зачем ?
Наверное, чтобы было с чем сравнивать потом :) Начнет учить Yii и скажет "Блин! Круто же! Не то, что в этом CI" :D
Twitter: @timlar_ua
Аватара пользователя
RusAlex
Сообщения: 324
Зарегистрирован: 2010.08.29, 15:30

Re: Вопросы новчика

Сообщение RusAlex »

вспоминается старый анекдот:
мужик ходит на работе и постоянно рожа у него кривая,
ворчит, ноет, не находит себе места. Каждый день с понедельника по четверг.
Наконец один коллега не выдерживает и спрашивает:
"А ты что такой постоянно страдающий?"
Тот отвечает:
"Понимаешь, всё у меня в жизни херово, жена мозг делает, дети давно не радуют,
работа - говно."
-Ну а ноешь то чего постоянно? Мужик ведь.
-Да у меня туфли на 4 размера меньше.
-Нафига ?
-Единственное счастье, когда прихожу домой и их снимаю.
gadiy
Сообщения: 6
Зарегистрирован: 2011.09.01, 17:31

Re: Вопросы новчика

Сообщение gadiy »

smck87 писал(а):
gadiy писал(а):Капец это все страшно.... слов непонятных цела ахапка и к ним прицем
чем лучше разбираюсь, тем больше удивляюсь, как я без этого обходился на codeigniter.

Nafania, расширение нашел, спс, пробую :)

update: gadiy, почитал топик с начала, учите по очереди c++, php, codeigniter, а потом yii.
Дело в том что пхп я владею на уровне функционального программирования... с++ как таковой мне в работе пока ненужен и поэтому ни стимула ни желания его изучать нет...
codeigniter - хотел начать с него... потому как есть видеоуроки и тд и тп... но почитав статьи и отзывы решил обратить свой взор сразу на юии! Ну а зачем начинать учить что-то, что потом прийдеться заменить!?
Проблема в том что я пока не могу понять как это все применить... это у меня не складывается в голове!!! И вот это плохо... потому как логикой я не обделен, и даже считал это одним из своих хороших профессиональных качеств... а тут ООП... и глаза на лоб... и вроде все просто, но непонятно!!!
Аватара пользователя
timlar
Сообщения: 1382
Зарегистрирован: 2009.09.19, 17:49
Откуда: Украина, Днепропетровск
Контактная информация:

Re: Вопросы новчика

Сообщение timlar »

gadiy писал(а):Проблема в том что я пока не могу понять как это все применить... это у меня не складывается в голове!!! И вот это плохо... потому как логикой я не обделен, и даже считал это одним из своих хороших профессиональных качеств... а тут ООП... и глаза на лоб... и вроде все просто, но непонятно!!!
На самом деле не так страшен черт, как его малюют. По ООП есть много литературы в интернете. ООП одинаково в любом языке программирования. Главное понять основы и принципы, а остальное понимание начнет приходить по мере работы.
Twitter: @timlar_ua
Аватара пользователя
art0s
Сообщения: 18
Зарегистрирован: 2011.08.30, 07:34

Re: Вопросы новчика

Сообщение art0s »

У меня тут еще вопрос возник, в свете приведенного несколькими постами выше вопроса:
целесообразно ли использовать триггери субд?
Столкнулся с тем, что на многих шаред хостингах нет поддержки триггеров. :(
Или сохранять лучше целостность данных "программным" путем и не париться? Ведь в этом
случае можно развернуть свое приложение уже на любом, в этом плане, хостинге...
С другое стороны, есть риск потери целостности этих самых данных в результате
злонамеренных или не очень действий пользователя.
Или все таких лучше поискать хостинг где "есть все" в субд, даже и пусть если
немного дороже...

To be or not to be, панимаешь... :ugeek:
smck87
Сообщения: 133
Зарегистрирован: 2011.01.30, 21:22

Re: Вопросы новчика

Сообщение smck87 »

RusAlex писал(а):а codeigniter то зачем ?
там так все просто и понятно, после него намного проще переходить на yii.

Мое решение в предидущих постах для описания связей не правильно. Стоило мне добавить еще пару тегов, как они уже не находились. Вот правильный вариант:

Код: Выделить всё

            'tag_on_game'=>array(self::HAS_MANY, 'TagOnGame', 'game_id'),
            'tags'=>array(self::HAS_MANY, 'Tag', 'tag_id','through'=>'tag_on_game'),
 
кроме того, нужно изменить структуру таблицы tag_on_game: вместо id(primary), game_id и tag_id оставить только game_id и tag_id и оба поля сделать ключами.
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Вопросы новчика

Сообщение Stamm »

timlar писал(а):
RusAlex писал(а):а codeigniter то зачем ?
Наверное, чтобы было с чем сравнивать потом :) Начнет учить Yii и скажет "Блин! Круто же! Не то, что в этом CI" :D
Ох, я так и говорю =)
Ну если только для сравнения его поюзать первое время. А если нет текущих задач на нём - то тогда лучше уж сразу начать с yii =)
papirus
Сообщения: 8
Зарегистрирован: 2011.09.07, 05:15

Re: Вопросы новчика

Сообщение papirus »

Всем привет! помогите плз, Я делаю регистрацию. У меня почему-то элемент формы не грузится. Видимо атрибуты или не модель не та.
ошибка:

Код: Выделить всё

CActiveForm and its behaviors do not have a method or closure named "isAttributeRequired". 
действие Registr в контроллере:

Код: Выделить всё

public function actionRegistr()
     {
        $form = new RegistrForm();
        if (!Yii::app()->user->isGuest) {
             throw new CException('Вы уже зарегистрированны!');
        } else {
            
            if (isset($_POST['RegistrForm'])) {
                
                $form->attributes = $_POST['RegistrForm'];
                
                $form->verifyCode = $_POST['RegistrForm']['verifyCode'];
                
                if($form->validate()) {

                            if ($form->model()->count('username = :username', array(':username' => $form->username))) {
                                 // Указанный логин уже занят. Создаем ошибку и передаем в форму
                                //$form->addError('login', 'Логин уже занят');
                                $this->render('registr', array('form' => $form));
                             } else {
                                // Выводим страницу что "все окей"
                                $form->save();
                                $this->render('registr_ok');
                            }
                                             
                    } else {
                        
                        $this->render('registr', array('form' => $form));
                    } 
             } else {
                 
              $this->render('registr', array('form' => $form));
            } 
        }
    } 
Модель:

Код: Выделить всё

<?php
class RegistrForm extends CFormModel {
    
    public $username;
    public $password;
    public $email;
    
    public function tableName()
    {
        return '{{user}}';
    }
    
    public function rules() {
        
        return array(
            array('username, password, email','required'),
        );
        
    }
} 
форма:

Код: Выделить всё

<?php
$this->pageTitle=Yii::app()->name . ' - Регистрация';
$this->breadcrumbs=array(
    'Регистрация',
);
?>

<h1>Регистарция</h1>

<div class="form">
<?php $form=$this->beginWidget('CActiveForm'); ?>

<div class="row">
        <?php echo $form->LabelEx($form, 'username'); ?>
        <?php //echo $form->textField($form,'username'); ?>
        <?php //echo $form->error($form,'username'); ?>
    </div>

    <div class="row">
        <?php //echo $form->labelEx($form,'password'); ?>
        <?php //echo $form->passwordField($form,'password'); ?>
        <?php //echo $form->error($form,'password'); ?>
    </div>
    
<?php $this->endWidget(); ?>
</div>
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Вопросы новчика

Сообщение Nafania »

вместо
<?php echo $form->LabelEx($form, 'username'); ?>
надо
<?php echo $form->LabelEx($model, 'username'); ?>
Аватара пользователя
TranceSmile
Сообщения: 562
Зарегистрирован: 2011.06.27, 19:04
Откуда: Украина
Контактная информация:

Re: Вопросы новчика

Сообщение TranceSmile »

А проверка у тебя на то что б не было одинаковых логинов жесть. Не легче в моделе написать

Код: Выделить всё

  public function rules() {
        
        return array(
            array('username, password, email','required'),
            array('username,'unique','message'=>'Такой логин уже занят'),
        );
        
    }
Изображение
papirus
Сообщения: 8
Зарегистрирован: 2011.09.07, 05:15

Re: Вопросы новчика

Сообщение papirus »

Nafania писал(а):вместо
<?php echo $form->LabelEx($form, 'username'); ?>
надо
<?php echo $form->LabelEx($model, 'username'); ?>
почему $model то? экземпляр же у меня $ form
TranceSmile писал(а):А проверка у тебя на то что б не было одинаковых логинов жесть. Не легче в моделе написать

Код: Выделить всё

  public function rules() {
        
        return array(
            array('username, password, email','required'),
            array('username,'unique','message'=>'Такой логин уже занят'),
        );
        
    }
спасибо попробую так
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Вопросы новчика

Сообщение samdark »

Так, кажется, тему пора закрыть. Опять всё в одном…
Закрыто