За последние 24 часа нас посетили 57215 программистов и 1805 роботов. Сейчас ищут 906 программистов ...

Yii-framework

Тема в разделе "PHP для новичков", создана пользователем mirosas, 16 авг 2015.

  1. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    Где чего почитать чтобы быстренько изучить?
     
  2. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
  3. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    Спасибо. Но мне бы для начала не полное руководство, а:
    1. Что такое, с чем едят, архитектура в общих чертах без деталей, как и где искать что не знаю но надо.
    2. Быстренько научиться на нем что-то простенькое делать.

    Завтра начинаю, в пятницу заканчиваю. Может быть задание какое-нибудь дешевенькое подкинут, тогда будет на чем попрактиковаться, но с заданием пока вилами на воде писано.
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    mirosas, так romach как раз вам на это ссылку и дал. Там первые две главы - как установить скелет и заставить его работать. Архитектура - стандартный MVC, фреймворк достаточно удобен тем, что реализовано много типовых задач уже реализовано. К нему много сторонних расширений на все случаи жизни к тому же.

    https://github.com/yiisoft/yii2/blob/master/docs/guide-ru/s ... llation.md
    https://github.com/yiisoft/yii2/blob/master/docs/guide-ru/start-workflow.md
    https://github.com/yiisoft/yii2/blob/master/docs/guide-ru/start-hello.md

    вот вам что-нибудь простенькое. Но, чтоб его использовать, надо очень хорошо понимать пространства имён, классы и т.п.
     
  5. Alex_1984

    Alex_1984 Новичок

    С нами с:
    10 дек 2014
    Сообщения:
    133
    Симпатии:
    0
    Чтоб новую тему не создавать, тут спрошу. Поставил Yii, выдает 500 internal server error, почему может быть такое?
    запрос
    Host: yii.gorgazik.ru
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Referer: http://yii.gorgazik.ru/basic/requirements.php
    Cookie: SESS9fd1c989665c9f765ecdbbff5836a441=96nfiYqZprcu6S8kdAFRrf0oMs04KTNUPu5S54U0TEU
    Connection: keep-alive

    ответ

    Connection: close
    Content-Language: ru
    Content-Type: text/html; charset=UTF-8
    Date: Sun, 16 Aug 2015 18:11:29 GMT
    Server: Apache/2.4.10 (Ubuntu)
    Transfer-Encoding: chunked
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Посмотри log/журнал ошибок php и yii
     
  7. Alex_1984

    Alex_1984 Новичок

    С нами с:
    10 дек 2014
    Сообщения:
    133
    Симпатии:
    0
    php-fpm log

    [16-Aug-2015 21:30:02] NOTICE: Reloading in progress ...
    [16-Aug-2015 21:30:02] NOTICE: reloading: execvp("/usr/sbin/php5-fpm", {"/usr/sbin/php5-fpm", "--nodaemonize", "--fpm-config", "/etc/php5/fpm/php-fpm.conf"})
    [16-Aug-2015 21:30:02] NOTICE: using inherited socket fd=8, "/var/run/php5-fpm.sock"
    [16-Aug-2015 21:30:02] NOTICE: using inherited socket fd=8, "/var/run/php5-fpm.sock"
    [16-Aug-2015 21:30:02] NOTICE: using inherited socket fd=9, "/var/lib/php5-fpm/web2.sock"
    [16-Aug-2015 21:30:02] NOTICE: using inherited socket fd=9, "/var/lib/php5-fpm/web2.sock"
    [16-Aug-2015 21:30:02] NOTICE: fpm is running, pid 926
    [16-Aug-2015 21:30:02] NOTICE: ready to handle connections
    [16-Aug-2015 21:30:02] NOTICE: systemd monitor interval set to 10000ms

    apache log


    [Sun Aug 16 21:30:02.796964 2015] [mpm_prefork] [pid 4168] AH00169: caught SIGTERM, shutting down
    [Sun Aug 16 21:30:03.907796 2015] [ssl] [pid 4382] AH01906: alex.host.com:8080:0 server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
    [Sun Aug 16 21:30:03.907943 2015] [ssl] [pid 4382] AH01909: alex.host.com:8080:0 server certificate does NOT include an ID which matches the server name
    [Sun Aug 16 21:30:03.908171 2015] [suexec] [pid 4382] AH01232: suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)
    [Sun Aug 16 21:30:03.948713 2015] [auth_digest] [pid 4384] AH01757: generating secret for digest authentication ...
    [Sun Aug 16 21:30:03.958078 2015] [:notice] [pid 4388] FastCGI: process manager initialized (pid 4388)
    [Sun Aug 16 21:30:04.024531 2015] [:error] [pid 4384] python_init: Python version mismatch, expected '2.7.6', found '2.7.9'.
    [Sun Aug 16 21:30:04.024672 2015] [:error] [pid 4384] python_init: Python executable found '/usr/bin/python'.
    [Sun Aug 16 21:30:04.024680 2015] [:error] [pid 4384] python_init: Python path being used '/usr/lib/python2.7/:/usr/lib/python2.7/plat-x86_64-linux-gnu:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload'
    [Sun Aug 16 21:30:04.024710 2015] [:notice] [pid 4384] mod_python: Creating 8 session mutexes based on 150 max processes and 0 max threads.
    [Sun Aug 16 21:30:04.024717 2015] [:notice] [pid 4384] mod_python: using mutex_directory /tmp
    [Sun Aug 16 21:30:04.043280 2015] [ssl] [pid 4384] AH01906: alex.host.com:8080:0 server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
    [Sun Aug 16 21:30:04.043332 2015] [ssl] [pid 4384] AH01909: alex.host.com:8080:0 server certificate does NOT include an ID which matches the server name
    [Sun Aug 16 21:30:04.058010 2015] [mpm_prefork] [pid 4384] AH00163: Apache/2.4.10 (Ubuntu) mod_fastcgi/mod_fastcgi-SNAP-0910052141 mod_fcgid/2.3.9 mod_python/3.3.1 Python/2.7.9 OpenSSL/1.0.1f configured -- resuming normal operati
    [Sun Aug 16 21:30:04.058083 2015] [core] [pid 4384] AH00094: Command line: '/usr/sbin/apache2'

    лога yii нет, если конечно он в папке runtime должен быть
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    error_log, так будет точнее, посмотри его.
    Если что, ещё в php.ini можно указать файл для него и он при ошибке появиться в той же папке где и файл php был выполнен.

    php.ini
    log_errors = On
    error_log = php_errors.log
     
  9. Alex_1984

    Alex_1984 Новичок

    С нами с:
    10 дек 2014
    Сообщения:
    133
    Симпатии:
    0
    в общем вот ошибка:

    Aug 16 22:08:14 alex php-cgi: PHP Warning: require_once(/var/www/clients/client1/web2/web/basic/vendor/yiisoft/yii2/requirements/YiiRequirementChecker.php): failed to open stream: No such file or directory in /var/www/clients/client1/web2/web/basic/requirements.php on line 23
    Aug 16 22:08:14 alex php-cgi: PHP Fatal error: require_once(): Failed opening required '/var/www/clients/client1/web2/web/basic/vendor/yiisoft/yii2/requirements/YiiRequirementChecker.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/clients/client1/web2/web/basic/requirements.php on line 23
    Aug 16 22:08:15 alex php-cgi: PHP Warning: require_once(/var/www/clients/client1/web2/web/basic/vendor/yiisoft/yii2/requirements/YiiRequirementChecker.php): failed to open stream: No such file or directory in /var/www/clients/client1/web2/web/basic/requirements.php on line 23
    Aug 16 22:08:15 alex php-cgi: PHP Fatal error: require_once(): Failed opening required '/var/www/clients/client1/web2/web/basic/vendor/yiisoft/yii2/requirements/YiiRequirementChecker.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/clients/client1/web2/web/basic/requirements.php on line 23
    Aug 16 22:08:16 alex php-cgi: PHP Warning: require_once(/var/www/clients/client1/web2/web/basic/vendor/yiisoft/yii2/requirements/YiiRequirementChecker.php): failed to open stream: No such file or directory in /var/www/clients/client1/web2/web/basic/requirements.php on line 23
    Aug 16 22:08:16 alex php-cgi: PHP Fatal error: require_once(): Failed opening required '/var/www/clients/client1/web2/web/basic/vendor/yiisoft/yii2/requirements/YiiRequirementChecker.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/clients/client1/web2/web/basic/requirements.php on line 23
    Aug 16 22:08:17 alex php-cgi: PHP Warning: require_once(/var/www/clients/client1/web2/web/basic/vendor/yiisoft/yii2/requirements/YiiRequirementChecker.php): failed to open stream: No such file or directory in /var/www/clients/client1/web2/web/basic/requirements.php on line 23
    Aug 16 22:08:17 alex php-cgi: PHP Fatal error: require_once(): Failed opening required '/var/www/clients/client1/web2/web/basic/vendor/yiisoft/yii2/requirements/YiiRequirementChecker.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/clients/client1/web2/web/basic/requirements.php on line 23
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ну файлы не может открыть, проверь пути, может не туда обращается
     
  11. Alex_1984

    Alex_1984 Новичок

    С нами с:
    10 дек 2014
    Сообщения:
    133
    Симпатии:
    0
    вот же хрень, поменял require_once($frameworkPath . '/requirements/YiiRequirementChecker.php'); на require_once($frameworkPath . '/requirements/yiirequirementchecker.php'); заработало

    Добавлено спустя 4 минуты 28 секунд:
    может в php.ini есть какая нибудь настройка чтоб он не различал заглавные и строчные буквы?

    Добавлено спустя 1 минуту 11 секунд:
    потому что requirements.php заработало а web/index.php нет, тоже чего то не находит наверно
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    это в linux есть различие между нижним и верхним регистром букв, а как так вышло что в коде и в файле названия различаются?
     
  13. Alex_1984

    Alex_1984 Новичок

    С нами с:
    10 дек 2014
    Сообщения:
    133
    Симпатии:
    0
    нашел )) в тотал командере при копировании опция включена была, переводить имена файлов в нижний регистр
     
  14. alba2001

    alba2001 Активный пользователь

    С нами с:
    7 фев 2012
    Сообщения:
    56
    Симпатии:
    0
    Пробую установить Yii при помощи Composer. На команду:
    Код (Text):
    1. composer create-project --prefer-dist yiisoft/yii2-app-basic basic
    выдается сообение:
    Код (Text):
    1. Reading bower.json of bower-asset/jquery.inputmask (3.1.43)
    2. Could not fetch https://api.github.com/repos/RobinHerbots/jquery.inputmask/contt
    3. Head to https://github.com/settings/tokens/new?scopes=repo&description=Composer7
    4. to retrieve a token. It will be stored in "/home/eboxadmin/.composer/auth.json".
    5. Token (hidden):
    Где брать этот токен?
     
  15. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
  16. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    Ok, отлично.

    Только я пока не знаю что такое MVC. Прочитал пару статеек, в итоге не могу четко провести границу между моделью и контроллером, и между контроллером и представлением.

    Кажется когда в лохматом 2005-м я делал cms-ку то у меня там было два модуля всего: Модуль отвечающий за модель, и модуль отвечающий за прицепку оформления к модели. Ну а сами оформления (html-css-png шаблоны) не были программным кодом.

    В общем я почитав немного по MVC не понял что куда пихать. model и view не перепутаю. А границу между view и controller, а так же между controller и model провести не могу.

    Такой вопрос - бизнес логика куда пишется - в модель или в контроллер?
     
  17. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
  18. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Бизнес-логика - в модель или в сервисный слой, есть два подхода. В конроллер плохо - они тогда раздуваются, и тогда тяжелее проект на другой фреймворк переносить. Теоретически, модели надо писать так, чтоб можно было их переносить в другой фреймворк без изменений. На практике правда у меня этого не получалось пока.
     
  19. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    Угу. А тогда что в контроллер пихать? Если бизнес логика в модель, а отображение в view. В контроллер пихать обработчик ввода?
     
  20. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    контроллер должен выполнять действия, связанные с приемом/передачей данных, вызовами конкретных моделей/вьюх. вроде как точка, управляющая внутренними направлениями, что и куда.
    вроде как
     
  21. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    А как ты сделаешь, если фреймворки обычно предоставляют свою реализацию моделей? Только если писать обертку над ними )

    p.s. я за сервисный слой. Бизнес-логика собирается в одном месте, а не размывается по моделям-контроллерам. К тому же при такой схеме удобно прикручивать event`ы на отдельные действия для расширения логики.
    p.p.s Так же бизнес-логику можно разобрать на отдельные действия и реализовать в виде команд: один класс - одно действие, название класса точно описывает что произойдет. Бонусом получаем простой и самодокументируемый код.
     
  22. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ну к примеру в книге Софронова по Yii2 предлагается делать специальный слой между моделями приложения и Yii2 ActiveRecord, т.е. по сути он там делает Data Mapper над Yii2 ActiveRecord. И пишет для чего:
    Хотя лично мне лень обычно возиться
     
  23. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
  24. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    Загляну пожалуй.

    Не очень мне нравится эта документация. Всё работает, а как - непонятно.
    Я пока даже не понял что это за значок такой: <?=

    Или где справочник по функциям. Вот например штука return "$this->render('say', ['message' => $message]);"
    - суют его всюду и везде, а справки по нему на видном месте нет. Где методы моделей? Используют, но не объясняют какие там есть. По фильтрам вообще ничего не понял, как их создавать, использовать, каков синтаксис, какие доступны фильтры, какие нет.

    Навалено всё в одну кучу. Документация блин.
     
  25. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    А почему документация по фреймворку вам должна объяснять основы PHP? Этот значок обозначает <?php echo, только более кратко. Раньше его можно было использовать только при разрешённых коротких тегах, но в php 5.4 разрешили использовать независимо от этой опции. Зачем лезть в сложный фреймворк, если вы php толком не знаете?

    Там две документации. Одна - просто как что делать, а другая - конкретно по всем классам. Где вторая на русском не знаю, пользуюсь английской: http://www.yiiframework.com/doc-2.0/index.html. Если то, вот первая на английском. Там более удобно пользоваться, поскольку все ссылки работают, в отличие от русской на github. Ну и в принципе, с английским такого уровня проблем не должно быть у программиста, иначе нет смысла программированием заниматься. http://www.yiiframework.com/doc-2.0/guide-README.html