Ответы пользователя по тегу Symfony
  • Когда нужно создать контроллер в Symfony?

    Контроллер лишь описывает действия над тем, что вам нужно. И получает данные от моделей посредством запросов через getPropertyObject и устанавливает их, если вы создаете что-то новое. setPropertyObject. Сама обработка правильности данных происходит в моделях, как и описание методов геттеров и сеттеров. Так же в других фреймворках есть сценарии, AcessControl - контроль доступа.

    Пример модель User: какой контроллер должен быть у нее?
    index - что будет, если человек зайдет на страницу профиля по адресу site.com/user/index/{id нужного юзера}
    registration - как создается новые юзер, описывается внутри него форма.
    Login - как пользователь авторизируется, не путайте с аутентификацией.
    Logout - как юзер выходит из системы
    update - как юзер изменяет свой профиль
    delete - что происходит если юзер удаляется.

    Суть происходящего: Я постараюсь очень тривиально, но надеюсь вы перечитаете принцип MVC. Заходит человек на сайт по адресу например site.com/user/registration
    Срабатывает ваш контролле User, затем идет экшен(действие внутри контроллера) registration Внутри этого экшена, есть две вариации "страницы", когда юзер не залогинен, мы показываем форму, когда юзер залогинен, доступа к функции регистрации не должно быть. В случае с формой, контроллер генерирует вид форму и ждет заполнения от пользователя. Кликая по кнопке Submit вызывается валидация(сам вызов метода прописан в контроллере, а то что именно это тметод делает написано в модели). Создается экземпляр класса User и наполняется данными из формы, валидируется, если валидация успешна. он сохраняет в базу и генерирует вид(страницу) об успешности.

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

    Рекомендую к просмотру:
    Тут самописный MVC, но он очень простой и описывает основную идею этой концепции, после просмотра, вы самостоятельно сможете написать свой MVC, но не стоит этого делать. Костылей в интернете хватает. Просто ознакомьтесь и проясните для себя некотоыре моменты.
    Часть 1
    Часть 2
    Ответ написан
    2 комментария
  • Почему принимается как массив, а не как объект?

    А что вы сделали, что бы он был объектом ?
    Массив идет пара + значение. PHP может преобразовывать типы данных.
    Но массив это массив, а объект это объект. В цикле вы только перебираете полученное.
    Вы либо создадите объект и наполните его полученным массивом. Либо более изящное решение вам подскажут.
    Ответ написан
    Комментировать
  • Symfony 2, как можно использовать проверку внутри QueryBuilder-а?

    HanDroid
    @HanDroid Автор вопроса
    Решение ситуации таково:
    Точку с запятой до цикла, внутри цикла после запроса и продолжение запроса начинать с $query->
    ->where('lower(p.firstname) LIKE lower(:search)');
            if($country != NULL){
                $query->andWhere('c.country_id = :country')->setParameter('country', $country);
               }
                $query->setParameter('search', '%'.$search.'%')
    Ответ написан
    Комментировать