Nano Hash - криптовалюты, майнинг, программирование

Ошибки пользовательской модели Yii

Я сохраняю экземпляр модели, выполняя некоторые действия в функции модели "beforeSave".
Я хочу добавить некоторые ошибки/сообщения в модель, а затем получить их в контроллере и показать пользователю.
Пока я есть две идеи, как это реализовать:

  • Использовать фиктивный атрибут с функцией ActiveRecord "addError": $this->addError("dummy"=>"my message"); Это не лучший способ, так как мне придется изобретать новые фиктивные атрибуты.
  • Добавьте в модель новое свойство «custom_errors» и функцию «addCustomErrors».

Может быть, есть встроенный способ сделать это или расширение?
В любом случае, как я могу это сделать?

25.04.2012

  • Вы хотите добавить сообщения об ошибках внутри beforeSave? Это не очень хорошая идея, почему бы вам не сделать это во время проверки? 25.04.2012
  • например, я загружаю файл и должен проверить, загружен ли он на сервер, или я выполняю другие действия, такие как очистка кеша и т. д., которые не имеют ничего общего с проверкой 25.04.2012
  • Все это должно было успешно завершиться до того, как вы вызовете save... 25.04.2012
  • Я не уверена. Я загружаю файл с помощью swfuploader и просто заполняю поле файла в форме, очистка кеша выполняется после фактического сохранения файла, в любом случае я хочу сообщить пользователю, что действие было выполнено. Некоторые поля записи формируются на основе другой информации. 25.04.2012

Ответы:


1

Вы можете использовать addError(), но нет необходимости создавать поддельные атрибуты. Если ошибка не связана ни с чем в самой модели, значит, вы делаете что-то не так :p

Итак, в вашем случае это будет что-то вроде:

 $this->addError('file', 'Something happened I wasn\'t pleased with');

Если в атрибуте file есть какие-либо другие ошибки, они будут накапливаться, поэтому вам не нужно беспокоиться о перезаписи.

25.04.2012
  • только один вопрос. если я хочу передать сообщение, которое не является ошибкой. скажем, я хочу заменить загруженный файл и сообщить пользователю, что он был заменен. Если я сделаю это в addError, я не уверен, что модель сохранится, так как в ней есть ошибка. 29.04.2012
  • Ошибка добавления не должна влиять на сохранение модели. пока он проверяет, он должен сохранить 29.04.2012
  • Мне нужно проверить, что запись не создана в неправильное время дня. Что я делаю неправильно? 14.01.2015

  • 2

    Я не вижу здесь проблемы. Просто используйте addError() http://www.yiiframework.com/doc/api/1.1/CModel#addError-detail. Модель сохраняется даже после вызова на ней save(), поэтому вы можете просто сделать что-то вроде

    yourController()
    {
       do_something();
       do_something();
       $model->save();
       $errors[]=do_what_you_have_to_do_to_define_the_errors_which_will_be_added();
       $model->addError(attribute, $errors);
       $this->render(viewWhereTheErrorWillBeDisplayed, $model);
    }
    
    25.04.2012
  • Вопрос в том, как добавить ошибки без какого-либо атрибута 14.01.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..