Leaderboard


Popular Content

Showing content with the highest reputation on 04/18/15 in all areas

  1. 1 point
    Я предполагаю так. Поскольку эта модель может быть востребованой, то имя ее должно быть универсально. Планировал user_register (и лучше придерживаться этого именования), что бы они в Редакторе форм становились рядом с user (не чужие же друг другу). Эта модель должна по сути иметь 4 must have поля - newpass, newpass_retype, login и email полностью идентичные таким же из user. Я привел системные имена. Имена меток значения не имеют, а вот системные имена имеют, так как эти данные будут проэцироваться на одноменные колонки в таблице пользователей, куда на такие же поля аналогично будет проецироваться и модель user, для редактирования профиля, например. Главное отличие модели user_register от user - первая не нуждается в реальной таблице, поэтому в ее заголовке жать кнопку Создать таблицу не нужно. Страшного ничего не будет, но и новой таблицы в БД не требуется. Внедрение. /apps/system/lib/system/user/register_using_model.php есть строка $form_data = $this->data_model;Она встречается в _defaultAction() и в _new_doneAction() почти в самом начале. Это подключение модели для формирования формы регистрации. В таком виде берется модель user, так как регистрация - это потомок пользователя. Что бы распаралелить это место, мы эту строку заменяем (в _defaultAction() и в _new_doneAction()) на if(file_exists(SITEBILL_DOCUMENT_ROOT.'/apps/table/admin/admin.php') && file_exists(SITEBILL_DOCUMENT_ROOT.'/apps/columns/admin/admin.php') && file_exists(SITEBILL_DOCUMENT_ROOT.'/apps/table/admin/helper.php') ){require_once SITEBILL_DOCUMENT_ROOT.'/apps/table/admin/helper.php';$ATH=new Admin_Table_Helper();$form_data=$ATH->load_model('user_register', false);}if(!$form_data || empty($form_data)){$form_data = $this->data_model;}else{$form_data[$this->table_name] = $form_data['user_register'];}Т.е. запрашиваем редактор форм на наличии модели user_register и, если таковая есть, и в ней есть поля, то мы "рабочую" модель user подменяем нашей оптимизированной. И дальше код работает с нашей моделью регистрации так, как будто это родная user. Не следует забывать, что модель user_register не наследует, а подменяет модель user. И если вы добавите поля с "Хранить в таблице" в модель user_register, но не предусмотрите таких же полей в user (а именно по ней формируется таблица под пользователей в БД), то получите ошибку на запросе.