Уважаемые Гуру — подскажите.
Есть в файлах grid_* такой вод код
Подскажите в каком месте и как инициализируется $controller?
Ищу единомышленников.
Идея стоит выделки?
Для участия в голосовании необходима регистрация на сайте
#16
21 июня 2014 в 19:29
#17
22 июня 2014 в 00:40
Друзья — ну помогите.
#18
23 июня 2014 в 00:12
Скорпион, так это аргумент функции, там где функция вызывается — там и инициализируется.
Сегодня в 19:41
#19
23 июня 2014 в 00:26
Это я понял. Но вот смотрю на примере того же компонента "Теги" и не где не вижу где это инициализируется. Но там оно работет, а в моем случае, в моем шаблоне вывода информации — нет.
Пока вышел из ситуации заменой данной строчки на:
Теперь формирование урла выполняется правильно.
А при
на выходе получал add
Пока вышел из ситуации заменой данной строчки на:
'href' => href_to($this->controller->root_url, 'add')
А при
#20
23 июня 2014 в 00:32
Все таки не зря я сначала озадачился скриптом замены. После создания и изучения данной функции мне легче было понять какие таблицы нужно создать в базе.
На данный момент остановился на этом:
На данный момент остановился на этом:
INSERT INTO `{#}controllers` (`title`, `name`, `is_enabled`, `options`, `author`, `url`, `version`, `is_backend`) VALUES ('Мои патчи', 'mypatch', 1, '', 'Scorpion', '', '1.0', 1); DROP TABLE IF EXISTS `{#}mypatch`; CREATE TABLE IF NOT EXISTS `{#}mypatch` ( `id` int(11) NOT NULL, `description` varchar(100) DEFAULT NULL, `file_path_id` int(11) DEFAULT NULL, `file_name_id` int(11) DEFAULT NULL, `order_patch` tinyint(4) DEFAULT NULL, `code_search` text DEFAULT NULL, `code_replace` text DEFAULT NULL, `shifts` text DEFAULT NULL, `state` tinyint(4) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS `{#}mypatch_paths`; CREATE TABLE IF NOT EXISTS `{#}mypatch_paths` ( `id` int(11) NOT NULL, `file_path` varchar(100) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS `{#}mypatch_files`; CREATE TABLE IF NOT EXISTS `{#}mypatch_files` ( `id` int(11) NOT NULL, `file_name` varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE `{#}mypatch` ALTER TABLE `{#}mypatch_paths` ALTER TABLE `{#}mypatch_files` ALTER TABLE `{#}mypatch` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `{#}mypatch_paths` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `{#}mypatch_files` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
#21
23 июня 2014 в 00:34
Возможно не все верно там при создании, поэтому если у кого есть советы или вопросы — буду рад выслушать.
#22
23 июня 2014 в 14:41
Уважаемые- помогите. Чет не могу понять в чем проблема.
Исходные файлы:
Исходные файлы:
<?php class actionMypatchAdd extends cmsAction { public function run(){ $is_can_add = cmsUser::isAdmin(); if (!$is_can_add) { cmsCore::error404(); } $errors = false; $form = $this->getForm('patch'); $is_submitted = $this->request->has('submit'); $patch = $form->parse($this->request, $is_submitted); if ($is_submitted) { $errors = $form->validate($this, $patch) ; if (!$errors){ // $patch_id = $this->model->addPatch($patch); } if ($errors){ cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error'); } } $template = cmsTemplate::getInstance(); 'do' => 'add', 'form' => $form, 'patch' => $patch, 'errors' => $errors )); } }
<?php // $this->addBreadcrumb(LANG_MYPATCH_CONTROLLER, $this->href_to('')); if ($do == 'add') { $page_title = LANG_MYPATCH_ADD;} if ($do == 'edit') { $page_title = LANG_MYPATCH_EDIT; $this->addBreadcrumb ($patch['description'], $this->href_to('patch', $patch['id'])); } $this->setPageTitle($page_title); $this->addBreadcrumb($page_title); /* $this->addToolButton(array( 'class' => 'save', 'title' => LANG_SAVE, 'href' => "javascript:icms.forms.submit()" )); */ 'class' => 'cancel', 'title' => LANG_CANCEL, 'href' => $this->href_to('') )); /**/ ?> <?php 'action' => '', 'metod' => 'post', 'toolbar' => false ), $errors);
#23
23 июня 2014 в 14:56
Так вот — почему оно не выводит форму для заполнения поля "file" ?
При нажатии "добавить" — получаю вот что:
При нажатии "добавить" — получаю вот что:
#24
23 июня 2014 в 15:00
Тоесть форму в переменную $form (как я понял из показаний xdebug) он вносит — а вот вывод формы в шаблон не происходит.
#25
23 июня 2014 в 15:53
причем если для теста заменить код шаблона вывода на этот:
чтобы вывести на месте формы слово "тест" — получаем тоже самое.
То есть вывод заканчивается на построении глубинометра а все что после него — игнорируется :(
<?php // $this->addBreadcrumb(LANG_MYPATCH_CONTROLLER, $this->href_to('')); if ($do == 'add') { $page_title = LANG_MYPATCH_ADD;} if ($do == 'edit') { $page_title = LANG_MYPATCH_EDIT; $this->addBreadcrumb ($patch['description'], $this->href_to('patch', $patch['id'])); } $this->setPageTitle($page_title); $this->addBreadcrumb($page_title); /* $this->addToolButton(array( 'class' => 'save', 'title' => LANG_SAVE, 'href' => "javascript:icms.forms.submit()" )); */ 'class' => 'cancel', 'title' => LANG_CANCEL, 'href' => $this->href_to('') )); /**/ ?> <?php echo 'test'; // $this->renderForm($form, $patch, array( // 'action' => '', // 'metod' => 'post', // 'toolbar' => false // ), $errors);
То есть вывод заканчивается на построении глубинометра а все что после него — игнорируется :(
"ура — заработало!" © Простоквашино.
Нашел я в чем проблема:
в файле system\controllers\mypatch\backend\actions\add.php
меняем :
на
продолжаем "мучаться" дальше :)
Нашел я в чем проблема:
в файле system\controllers\mypatch\backend\actions\add.php
меняем :
$template = cmsTemplate::getInstance(); 'do' => 'add', 'form' => $form, 'patch' => $patch, 'errors' => $errors ));
'do' => 'add', 'form' => $form, 'patch' => $patch, 'errors' => $errors ));
#27
23 июня 2014 в 18:29
для первой ветки это тоже было бы полезно...
Не программисты со мной согласятся…
Не программисты со мной согласятся…
Скорпион, советую глянуть на PHP manipulator
A helper library for analyzing and modifying PHP source files.
как ясно из названия умеет анализировать и программно модифицировать php файлы
т.е. можете сделать cms которая собирает сама себя по кусочкам 😊
в принципе, можно при желании и автотесты сделать — для наката патча, запуска cms и проверки результата. Но автотесты похоже будут в тройке...
но так как сайт на Инстанте обычно делает и ведет один и тот же человек — то это все и не нужно в принципе
а БД всех патчей — в связи с всплеском хаков для каждой версии Инстанта — думаю имела бы смысл
A helper library for analyzing and modifying PHP source files.
как ясно из названия умеет анализировать и программно модифицировать php файлы
т.е. можете сделать cms которая собирает сама себя по кусочкам 😊
в принципе, можно при желании и автотесты сделать — для наката патча, запуска cms и проверки результата. Но автотесты похоже будут в тройке...
но так как сайт на Инстанте обычно делает и ведет один и тот же человек — то это все и не нужно в принципе
а БД всех патчей — в связи с всплеском хаков для каждой версии Инстанта — думаю имела бы смысл
#29
23 июня 2014 в 20:22
Именно это главная цель. И возможность в одно касание применить/отменить патч.а БД всех патчей — в связи с всплеском хаков для каждой версии Инстанта — думаю имела бы смысл
Я не собираюсь писать компонент "обновления" всей системы… поэтому и оставил для разработчиков имя контролера "patch"😊а застолбил для своего компонента имя "mypatch" — тоесть это небольшие хаки, которые помогут обывателю немного подправить код до выхода официального релиза.
#30
23 июня 2014 в 20:25
Я конечно извиняюсь, но ориентируюсь пока только на двойку.для первой ветки это тоже было бы полезно...