WedX - журнал о программировании и компьютерных науках

Как использовать модель в помощнике - CakePHP 2.x

Недавно я обновил свое приложение с Cake 1.3.x до Cake 2.x. Теперь у меня есть помощник, который использует модель в какой-то функции. Изначально синтаксис для загрузки модели был (работает для 1.3.x)

     App::import('Model', $modelName);
     $modelObject = &ClassRegistry::getObject($modelName);    
     $modelObject->find()

Теперь я изменил его на следующий

    App::uses($modelName,'Model');
    $modelObject = &ClassRegistry::getObject($modelName);
    $modelObject->find()

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

PS: Сообщение об ошибке:
Вызов функции-члена find() для необъекта

13.11.2012

  • правильный синтаксис всегда был просто $User = ClassRegistry::init('User') 13.11.2012

Ответы:


1

рабочий код должен быть

//let $modelName be User  
App::import("Model", "User");  
$model = new User();  
$model->find("list");  

Надеюсь, это поможет кому-нибудь из нуждающихся

13.11.2012
  • Правильный ответ, вероятно, должен быть «Вы этого не сделаете», поскольку использование модели в помощнике нарушает работу MVC. Ваш список пользователей должен быть скорее определен в ваших контроллерах, а затем использоваться только представлениями. 13.11.2012
  • @nIcO Я очень хорошо осведомлен о MVC, но иногда нам нужно отобразить какой-либо идентификатор или т. Д. В качестве релевантных данных для пользователя для лучшего понимания ... это одна из таких ситуаций. В любом случае спасибо за помощь 14.11.2012

  • 2

    Вы также можете загрузить модель во вспомогательный класс, добавив следующий метод в вспомогательный класс:

    Шаг 1:

    public function loadModel($modelClass = null, $id = null) {
        if ($modelClass === null) {
            $modelClass = $this->modelClass;
        }
    
        $this->uses = ($this->uses) ? (array) $this->uses : array();
        if (!in_array($modelClass, $this->uses, true)) {
            $this->uses[] = $modelClass;
        }
    
        list($plugin, $modelClass) = pluginSplit($modelClass, true);
    
        $this->{$modelClass} = ClassRegistry::init(array(
                    'class' => $plugin . $modelClass, 'alias' => $modelClass, 'id' => $id
        ));
        if (!$this->{$modelClass}) {
            throw new MissingModelException($modelClass);
        }
        return true;
    }
    

    Шаг 2: вызовите вышеуказанный метод, как в контроллере, например:

    $this->loadModel(ModelName);
    

    надеюсь это решит проблему

    14.01.2017

    3

    Я хочу пройти через помощника для просмотра данных в виде foreach

    public function display()
    {
        $links = TableRegistry::getTableLocator()->get('category');
        $category = $links->find('all')
            ->where(['status' => 1, 'position' => 0])
            ->select([
                "category" => 'parent', 'name'
            ])
            ->toArray();
        return $category['category'];
    }
    
    21.12.2018
  • Это вопрос или ответ? 11.06.2020
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]