• Почему Yii/Yii2 не подходит для крупных проектов?

    @evilray
    Александр Макаров В моём мире существует стоимость разработки и стоимость поддержки, поддержка больших проектов на yii2 необоснованно дорогая. Из этого опыта я делаю соответствующие выводы и делюсь ими с коллегами.

    При этом сайт по заказу пиццы написанный на yii2 прекрасно работает и трогать его нет ни желания ни потребности.
  • Почему Yii/Yii2 не подходит для крупных проектов?

    @evilray
    Видел сильно больше четырех проектов написанных без фреймворков, в том числе CRM. По вашей логике - фреймворки не нужны, нужно "делать".

    Yii создает больше проблем чем решает именно на больших проектах с большим жизненным циклом. Синглотоны, валидация в моделях, актив рекорд, божественные объекты и т.д. При этом RAD-фреймворки хороши для быстрого прототипирования, херак-херак и в продакшн. Но даже для этого я бы выбрал ларавель или джангу.

    То, что на yii делают такие проекты, не означает что он для них подходит.

    К этому всему стоит добавить, что если вы столкнетесь с проблемами самого фреймворка, то уважаемый Александр Макаров ответит вам шаблоном "давно бы сделали пулл-реквест". Подобный подход к поддержке автоматически делает инструмент не подходящим для энтерпрайза.
  • Что такое провайдеры?

    @evilray
    Maks Burkov, ну так ctrl+click в ide никто не отменял же. Да и поиск по файлам работает прекрасно, как и поиск вхождений. Возможно имеет смысл начать с изучения ide?
  • Как внутри v-on = "..." получить глобальный контекст?

    @evilray
    Я забыл самое очевидно решение — навесить на форму <form @submit="onSubmit">, а вместо ссылки сделать кнопку, которую при желании в css можно сделать выглядящей как ссылка. В onSubmit уже запихать и рекалькулейт, и всё что душе угодно.

    Я посмотрел функцию recalculate, она вполне может делать перерасчет как по изменению любого поля (собственно ради этого и имеет смысл завозить vue — реактивность же), так и по onBlur.

    Например вот. Респонс возвращает ссылку, пока сервер думает форма блокирована полупрозрачным слоем и спиннером, после получения ответа — запускаем загрузку по полученной ссылке.
  • Как внутри v-on = "..." получить глобальный контекст?

    @evilray
    Во первых вы путаете onclick и @click. Onclick — событие яваскрипта, @onclick сокращение vue-директивы v-on:click. Внутри v-on:click можно вместо vm.methodName() использовать methodName(). Это, собственно, ответ на ваш первый вопрос.

    Далее :)

    По феншую вам не нужно отправлять форму. Нужно задать vue-модель для инпутов:
    v-model="calcilatorForm.title"> (остальным полям также)

    В js файле добавить в data:
    ...
    data: {
        calculatorForm: {
            title: '',
            ...остальные поля
        },
        page : 'calculation',
        ...
    },
    ...


    Вместо сабмита формы отправлять через ajax данные из модели (это уже отдельный вопрос). Ну и рекалькуляты, конечно, не нужны :) Есть событие @change которое будет пересчитывать все что вы захотите на лету.

    Вообще, на ларакаст очень хороший и доступный (если понимаете английский), а главное бесплатный курс по vue . Там есть и про формы.
  • Использование исключения для редиректа/возврата результата в Symfony 2

    @evilray
    Не может, потому что после отдачи reponse есть еще ряд событий (kernel.response, kernel.finish_request, kernel.terminate), которые могут быть использованы, а вы взяли и exit; написали.
  • Где хранить пользовательские настройки в Symfony 2 и какой сервис за это отвечает?

    @evilray
    Для этого можно сделать что-то вроде site-options.yml и его уже редактировать из админки. В symfony есть средства для работы с файлами конфигурации.
    symfony.com/doc/current/components/config/resource...

    Можно сделать сервис, из которого дергать эти параметры.

    Если опция привязана к текущему пользователю (пользователь в настройках профиля указывает количество новостей на странице, или на странице новостей есть выбор), как вариант, можно добавить поле options к классу user с типом array.

    Всё зависит от фантазии :)