Различные вопросы по PHP и MySQL

242K
.
The Fast, Secure and Professional - Yii2
Авторизация вообще простая
Нужно сюда передать модель с данными юзера и время для кукисов (если надо)
Yii::$app->user->login($user, $this->rememberMe ? 864000 : 0);


Выход
Yii::$app->user->logout();
.
# Rakovskiy (12.02.2015 / 00:47)
А чё так?
Куча статики, завязок \Yii::$app. Слишком сильно загоняет в рамки. Не гибко. Да и вообще
Нет, может там и есть какие-то хорошие идеи, но в целом он мне чем-то напоминает CI, Kohana и им подобные.
Но это не означает, что объективно фреймворк говно. Для некоторых задач он может быть и действительно подходит лучше всего.
.
(\/)____o_O____(\/)
пиши чтоб работало. рефакроринг еще ни кто не отменял
.
Rakovskiy, на твой пост (12.02.2015 / 00:56) отвечу, А если я делаю REST/RPC API, что мне делать тогда?
.
The Fast, Secure and Professional - Yii2
# reaper (12.02.2015 / 00:56)
Куча статики, завязок \Yii::$app. Слишком сильно загоняет в рамки. Не гибко. Да и вообще
Нет, может там и есть какие-то хорошие идеи, но в целом он мне чем-то напоминает CI, Kohana и им подобны
Ну, не знаю. Юзал когда-то зенд первый не понравился вообще, на то время пытался юзать Yii тож первый. Сейчас даже не вспомню, что там плохого и хорошего.

Ну вот Yii как первый мой фреймворк, мне пока нравится... Там всего куча, самому почти и писать ничего не надо из системного. Моет есть и варианты лучше, не спорю так как мой круг срди ФВ пока мал.
.
Rakovskiy, Ну всё ещё впереди. Если не будешь стоять на месте и без всяких предрассудков посмотришь на другие фреймворки, есть большая вероятность, что потом будешь смотреть на него как на говно.
.
Кстати скоро Zend третий будет. Выглядит многообещающе. Больше всего привлекла реализация PSR-7.
.
(\/)____o_O____(\/)
имхо, для использования фв, и выбора между ними, нужен опыт в процедурном стиле, чтоб понимать процессы на самом простом уровне
.
The Fast, Secure and Professional - Yii2
# reaper (12.02.2015 / 01:00)
Rakovskiy, на твой пост (12.02.2015 / 00:56) отвечу, А если я делаю REST/RPC API, что мне делать тогда?
Ой, честно сказать с REST ещё не сталкивался но видел, что в Yii2 много всего для этого есть, даже в поисках некоторых ман попадал на этот REST. Знаю, что там что-то с контроллерами мутить можно, ну типа наследовать от RestController и т.д.

https://github.com/yiisoft/yii ... rt.md
https://github.com/yiisoft/yii ... es.md
.
Rakovskiy
The Fast, Secure and Professional - Yii2
# Koenig (12.02.2015 / 01:07)
имхо, для использования фв, и выбора между ними, нужен опыт в процедурном стиле, чтоб понимать процессы на самом простом уровне
гГ кстати про опыт в процедурке. Буквально пол года назад я писал на ФВ так

Контроллер
<?php
class IndexController extends Controller{
public function actionIndex(){
        View::head(array(
            'title' => 'Оставить запрос',
            'key' => 'Оставить запрос, связаться с Интеп, обратная связь, написать нам',
            'des' => 'Обратная связь, оставить нам сообщение, напишите нам'
        )); 

        $form = new MessageFilesModel();
        $text = null;
        $error = array();
        $value = array();

        $value['fio'] = isset($_POST['fio']) ? Check::string($_POST['fio']) : '';
        $value['email'] = isset($_POST['email']) ? Check::string($_POST['email']) : '';
        $value['ext_email'] = isset($_POST['ext_email']) ? Check::string($_POST['ext_email']) : '';
        $value['phone'] = isset($_POST['phone']) ? Check::string($_POST['phone']) : '';
        $value['ext_phone'] = isset($_POST['ext_phone']) ? Check::string($_POST['ext_phone']) : '';
        $value['text'] = isset($_POST['text']) ? Check::string($_POST['text']) : '';

        if (isset($_POST['submit'])){
            if (mb_strlen($value['fio']) < 3){
                $error[] = 'Неверная длина ФИО';
            }
            if (!Check::email($value['email'])){
                $error[] = 'Неверный формат e-mail';
            }
            if (mb_strlen($value['text']) < 5){
                $error[] = 'Неверная длина описания';
            }

            if (!$error){
                $message = new MessageModel();
                $message->fio = $value['fio'];
                $message->phone = $value['phone'];
                $message->ext_phone = $value['ext_phone'];
                $message->email = $value['email'];
                $message->ext_email = $value['ext_email'];
                $message->text = $value['text'];
                $message->new = 1;
                $message->time = Time::real();
                $message->save(0);

                //Загрузка файлов
                $path = ROOT . 'files/message/' . $message->id . '/';
                $error = $this->uploadFiles($form,$message->id);

                if ($error){
                    $message->delete();
                }else{
                    $contact = ContactsModel::model()->find();
                    if (isset($contact->mess_email)){
                        foreach (explode("\r\n",$contact->mess_email) as $email){
                            if (Check::email($email)){
                                $message = new YiiMailMessage;
                                $message->view = 'message';
                                $message->setBody($value,'text/html');
                                $message->addTo($email);
                                $message->from = Yii::app()->params['admin_email'];
                                Yii::app()->mail->send($message);
                            }
                        }
                    }
                    $text = 'Запрос отправлен';
                }
            }
        }

        $key = 'static_message';
        if (!$info = Yii::app()->cacheFile->get($key)){
            $info = StaticModel::model()->findByAttributes(array('page' => 'message'));
            Yii::app()->cacheFile->set($key,$info);
        }

        $this->render('index',array('value' => $value,'error' => $error,'text' => $text,'info' => $info,'model' => $form));

        View::foot();
}

    public static function uploadFiles($model,$ref){
        $error = array();
        $path = ROOT . 'files/message/' . $ref . '/';
        $files = CUploadedFile::getInstances($model, 'file');

        if (!is_dir($path)){
            mkdir($path);
            if (is_dir($path)){
                chmod ($path,0777);
            }
        }

        if ($model->validate()){
            foreach ($files as $file){
                $name = uniqid() . '.' . $file->getExtensionName();
                $file->saveAs($path . $name);
                //Записываем в БД
                $photo = new MessageFilesModel();
                $photo->name = $name;
                $photo->ip = Func::ip();
                $photo->ua = Func::ua();
                $photo->type = $file->getType();
                $photo->time = Time::real();
                $photo->ref = $ref;
                $photo->save(0);
            }
        }else{
            Func::deleteDir($path);
            $error = $model->getErrors();
            $error = $error['file'];
        }

        return $error;
    }
}


Представление
<div class="mainreq">

    <div class="white">
        <div class="hl"><h1>Оформление запроса</h1></div>

        <?php if ($text){ ?>
            <?php View::text($text . '</div>',true); ?>
        <?php } ?>

        <div class="alert alert-success" style="text-align: center;">
            <?php echo $info->text; ?>
        </div>

        <form action="#" method="post" class="clearfix" id="message_form" enctype="multipart/form-data">
            <?php if ($error){ ?>
                <?php View::error($error); ?>
            <?php } ?>
            <div class="clearfix">
                <div class="re1">
                    <div><span class="red">*</span> ФИО</div>
                    <input type="text" name="fio" value="<?php echo $value['fio']; ?>">
                    <div><span class="red">*</span> Почта:</div>
                    <input type="text" name="email" value="<?php echo $value['email']; ?>">
                    <div><span class="red">*</span> Телефон:</div>
                    <input type="text" name="phone" value="<?php echo $value['phone']; ?>" placeholder="+375 XX XXXXXXX">
                    <div>Дополнительный телефон:</div>
                    <input type="text" name="ext_phone" value="<?php echo $value['ext_phone']; ?>" placeholder="+375 XX XXXXXXX">
                </div>

                <div class="re2">
                    <div><span class="red">*</span> Краткое описание:</div>
                    <textarea name="text" id="message"><?php echo $value['text']; ?></textarea>
                    <div> Дополнительная почта:</div>
                    <input type="text"name="ext_email" value="<?php echo $value['ext_email']; ?>">
                </div>
            </div>

            <?php View::formUpload($model,'Добавить файл'); ?>

            <div class="submit"><input type="submit" name="submit" value="Отправить запрос"></div>
        </form>
    </div>
</div>
</div>


Почти как джон с MVC...Куча своих классов, из Yii использовал только Active Record, Маршрутизатор, MVC (частично) ну и ещё пару фишек. Писал последний сайт на заказ, через посредника. Он какой-то крутой кодер, начал меня гонять то-то не так, то-то не так. Честно говоря спасибо ему за это, так бы стоял ещё на том уровне говнокода... Аж стыдно теперь перед ним немного.
Всего: 7969