Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
Watched Topics
FAQ
Поиск
Пользователи
Группы
Регистрация
Профиль
Войти и проверить личные сообщения
Вход
Список форумов Cake-PHP.ru
->
Общий
Ответить
Имя
Тема
Сообщение
Смайлики
Дополнительные смайлики
Цвет шрифта:
По умолчанию
Тёмно-красный
Красный
Оранжевый
Коричневый
Жёлтый
Зелёный
Оливковый
Голубой
Синий
Тёмно-синий
Индиго
Фиолетовый
Белый
Чёрный
Размер шрифта:
Размер шрифта
Очень маленький
Маленький
Обычный
Большой
Огромный
Закрыть теги
[quote="Алесь"]А вот за функционал - Спасибо! Вот это я и искал. Благодарю!!![/quote]
Настройки
HTML
ВЫКЛЮЧЕН
BBCode
ВКЛЮЧЕН
Смайлики
ВКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Отключить в этом сообщении смайлики
Если у вас плохое зрение или вы не можете прочесть этот код по какой-то другой причине, то обратитесь за помощью к
Администратору
.
Код подтверждения: *
Введите код в точности так, как вы его видите. Код является регистро-зависимым, а символ нуля имеет косую линию внутри цифры.
Часовой пояс: GMT + 3
Перейти:
Выберите форум
CakePHP Форум
----------------
Общий
Установка и настройка
Творчество
Вопросы и пожелания
Комментарии к главам руководства по CakePHP 1.1
Обзор темы
Автор
Сообщение
Алесь
Добавлено: 02 Июн 2008 16:52:34
Заголовок сообщения:
А вот за функционал - Спасибо! Вот это я и искал. Благодарю!!!
Hellbot
Добавлено: 02 Июн 2008 16:41:14
Заголовок сообщения:
Либо ручками рисовать поля
много event
Код:
<input id="Date" type="text" value="" name="data[][Event][Date]" maxlength="10" size="10"/>
много date в event
Код:
<input id="Date" type="text" value="" name="data[Event][][Date]" maxlength="10" size="10"/>
либо в 1.2 есть подобный функционал
который чуть ли не автомагически (любое слово) через saveAll сохраняется.
Алесь
Добавлено: 02 Июн 2008 16:01:31
Заголовок сообщения:
Мы получаем только последнее значение. Спасибо. 'name' => 'data[]['Event']['name']) - это, то что нужно (наверное) .
Сейчас потесцю.
Не. работает:
код:
Код:
<?php echo $html->input('Date/', array('size' => '10','maxlength'=>'10','id'=>'Date', 'name' => 'data[][Event][name]'));?>
В браузере:
Код:
<input id="Date" type="text" value="" name="data[Date][]" maxlength="10" size="10"/>
Hellbot
Добавлено: 02 Июн 2008 15:54:52
Заголовок сообщения:
Алесь
Мы уже получили несколько значений формы и у нас проблема сохранить, или мы получаем только последнее значение ?
Повторить 3 раза
Код:
$this->Model->create($this->data)
$this->Model->save();
будет 3 записи, с одинаковыми данными.
в 1.1 не много по другому, если я правильно помню, но в целом аналогично
Код:
$this->Model->id = 0;
$this->Model->save($this->data);
Что бы получить 3 разных поля в $this->data, нужно отправлять поля с другими названиями.
Я точно не помню как это в 1.1, но например
Код:
<?php echo $html->input('Event/name', array('size' => '60', 'name' => 'data[]['Event']['name']));?>
тогда в $this->data будет массив Event'ов.
Алесь
Добавлено: 02 Июн 2008 15:37:16
Заголовок сообщения:
Для одной модели, получаем несколько значений формы.
таким образом, что будет по два (или 3,4,5...) экземпляра полей: "name", "description", "forKind" (естественно для одной формы) . Нужно чтобы они все ДОБАВИЛИСЬ в таблицу.
Hellbot
Добавлено: 02 Июн 2008 15:02:20
Заголовок сообщения:
Не совсем понятно, в чем проблема:
- получить из формы несколько значений
- сохранить несколько моделей ?
Алесь
Добавлено: 02 Июн 2008 13:43:07
Заголовок сообщения: Вставить несколько записей за один запрос.
Нужно за один запрос вставить в таблицу несколько записей с последовательно увеличивающимися id. Например:
Есть модель событий:
таблица:
CREATE TABLE IF NOT EXISTS `events` (
`id` int(10) NOT NULL auto_increment,
`name` varchar(50) NOT NULL default '',
`description` text NOT NULL,
`forKind` tinyint(1) NOT NULL default '0',
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=76 ;
--
Модель:
app\models\event.php :
<?php
class Event extends AppModel {
var $name = 'Event';
}
Контроллер:
app\controllers\events_controller.php:
Код:
<?php
class EventsController extends AppController {
var $name = 'Events';
var $helpers = array('Html', 'Form','Javascript' );
function add() {
$this->layout = "admin";
if (empty($this->data)) {
} else {
$this->cleanUpFields();
if ($this->Event->save($this->data)) {
//
$this->Session->setFlash('The Event has been saved');
$this->redirect('/events/index');
} else {
$this->Session->setFlash('Please correct errors below.');
}
}
}
// и ещё несколько стандартных методов
}
?>
app\views\event\add.thtml:
Код:
<h2>New Event</h2>
<form action="<?php echo $html->url('/events/add'); ?>" method="post">
<div class="optional">
<?php echo $form->labelTag('Event/name', 'Name');?>
<?php echo $html->input('Event/name', array('size' => '60'));?>
<?php echo $html->tagErrorMsg('Event/name', 'Please enter the Name.');?>
</div>
<div class="optional">
<?php echo $form->labelTag( 'Event/description', 'Description' );?>
<?php echo $html->textarea('Event/description', array('cols' => '60', 'rows' => '10'));?>
<?php echo $html->tagErrorMsg('Event/description', 'Please enter the Description.');?>
</div>
<div class="optional">
<?php echo $html->checkbox('Event/forKind', null, array());?>
<?php echo $form->labelTag('Event/forKind', 'ForKind');?>
<?php echo $html->tagErrorMsg('Event/forKind', 'Please check the ForKind.');?>
</div>
<div class="submit">
<?php echo $html->submit('Add');?>
</div>
</form>
<ul class="actions">
<li><?php echo $html->link('List Events', '/events/index')?></li>
</ul>
Скажем если я изменю app\views\event\add.thtml таким образом, что будет по два (или 3,4,5...) экземпляра полей: "name", "description", "forKind" (естественно для одной формы). То в контроллере получу:
$this->data['Event']['name'] = 'последнее_поле_name_в_форме';
$this->data['Event']['description'] = 'последнее_поле_description_в_форме';
и т.д. ...
И следовательно сторчка $this->Event->save($this->data) в контроллере сохранит только последние значения полей.
Может, есть какой-то стандратный способ обойти это неудобство?
Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB
Если ничего интересного не нашли, можно рекламу почитать, а рекламируется у нас сегодня «».