Screamer, вот как я пишу допустим новнсти.
Сперва пишу механизм добавления, потом когда новость уже в базе - механизм отображения, и в конце уже с него изм/удал. Как бы скрипт пишется по той логической цепочке, по которой он, собсно, и работает.
if (!$this->loader->is_root) {
redirect('w_action/err');
}
$name = !preg_match('/[^\da-z]+/u', trim($name)) ? trim($name) : '';
$error = array();
$title = empty($name) ? 'create_board' : 'edit_board';
$title = $this->loader->lang('board')->$title;
$this->loader->settings['page_title'] = $title;
if (!empty($name)) {
$data = $this->loader->model('board')->get($name);
if (!is_array($data)) {
redirect('w-action/err');
}
} else {
$data = array(
'name' => '',
'summary' => '',
'description' => '',
'hidden' => 0,
);
}
if (!empty($_POST)) {
if (isset($_POST['ok'])) {
// Check'n'Save
$data['summary'] = isset($_POST['summary']) ? trim($_POST['summary']) : $data['summary'];
$data['description'] = isset($_POST['description']) ? trim($_POST['description']) : $data['description'];
$data['hidden'] = intval(isset($_POST['hidden']));
if (mb_strlen($data['summary']) < 2 || strlen($data['summary']) > 255) {
$error['summary'] = sprintf($this->loader->lang('common')->wrong_string_len, 2, 127);
}
if (strlen($data['description']) > 1000) {
$error['description'] = sprintf($this->loader->lang('common')->wrong_string_len_more, 500);
}
if (empty($name)) {
$data['name'] = isset($_POST['name']) ? trim($_POST['name']) : $data['name'];
if (mb_strlen($data['name']) < 1 || strlen($data['name']) > 10) {
$error['name'] = sprintf($this->loader->lang('common')->wrong_string_len, 1, 10);
} elseif(preg_match('/[^\da-z]+/u', $data['name'])) {
$error['name'] = $this->loader->lang('board')->wrong_board_name;
} elseif (is_dir(FILEPATH . 'boards' . DIR_SEP . $data['name'])) {
$error['name'] = $this->loader->lang('board')->board_already_exists;
}
}
if (empty($error)) {
$this->loader->model('board')->save($data);
if (empty($name)) {
$dir = FILEPATH . 'boards' . DIR_SEP . $data['name'];
mkdir($dir);
chmod($dir, 0777);
}
redirect($data['name']);
}
} else {
redirect((empty($name) ? 'w_action/panel' : $name)); // Cancel
}
}
return $this->loader->view('board_form', array(
'title' => $title,
'name' => empty($name),
'name_label' => $this->loader->lang('board')->name,
'summary_label' => $this->loader->lang('board')->summary,
'description_label' => $this->loader->lang('board')->description,
'hidden_label' => $this->loader->lang('board')->hide,
'submit' => $this->loader->lang('common')->save,
'cancel' => $this->loader->lang('common')->cancel,
'data' => $data,
'error' => $error,
));
Screamer (22.05.2013 / 15:06)Не ну если есть чёткое тз то да, особого мозголома нет. А вот с самого ноля, я так не могу. Мне сначала нужно придумать какие функции у этого скрипта будут, потом обрисовать сам скрипт и начинаю его делать. По другому у меня не как. Может просто опыта мало
-sanek-, Ну давай разберем на примере.
Небольшой скрипт. Дополнение к движку.
Пусть это будут новости.
Краткое ТЗ:
Добавление, изменение, удаление, просмотр новости.
Просмотр списка новостей,
Simba (22.05.2013 / 15:51)полностью согласен, именно так и делаю всегда
Думать много вредно. Гг.
Сначала нужно написать чтобы работало, а потом уже доводить код до нужного вида (ну в пределах разумного).
В противном случае если постоянно переписывать что-то, то ничего н