Значения по умолчанию для CakePHP, используя только первый символ - PullRequest
0 голосов
/ 12 декабря 2010

Я создаю приложение CakePHP с формой, которая генерирует значения по умолчанию (сейчас это только данные-заполнители, пока это не будет решено), которые добавляются в таблицу.Форма работает, она прекрасно вставляет запись, но по какой-то причине форма использует только первый символ значений по умолчанию.Так, например, «Заголовок» имеет только символ «t» в форме, «Содержимое» имеет только «c» и т. Д.

Когда я pr ($ this-> data), все данные-заполнителиесть.Я могу отредактировать их и добавить больше текста, который сохраняется нормально, так что это не проблема длины поля формы.Где-то между $ this-> data и $ this-> Form-> input значения по умолчанию усечены.Я не знаю, с чего начать устранение неполадок.Я ничего не смог найти здесь, и я мог найти только одно упоминание об этой проблеме, прибегая к помощи, которая не была решена.

Cakephp 1.3.6, PHP 5.3.3, Linux

Спасибо за вашу помощь

Результаты пр ($ this-> data):

Array
(
    [title] => title
    [content] => content
    [media_url] => media_url
)

Просмотр:

<? pr($this->data); ?>

<div class="generators form">
<?php echo $this->Form->create('Generator');?>
    <fieldset>
        <legend>Create New Post</legend>
    <?php
        echo $this->Form->input('title');
        echo $this->Form->input('content');
        echo $this->Form->input('publish_date');
        echo $this->Form->input('media_url');

    ?>
    </fieldset>
<?php echo $this->Form->end('Create Post');?>
</div>

Контроллер:

<?php
class GeneratorsController extends AppController {

    var $name = 'Generators';

    function posts() 
    {
        // save the post
        if (!empty($this->data)) {
            $this->Generator->create();
            if ($this->Generator->save($this->data)) {
                $this->Session->setFlash(__('The post has been created', true));
                $this->redirect(array('action' => 'posts'));


                // TODO: call posting app


            } else {
                $this->Session->setFlash(__('There was a problem. Please, try again.', true));
            }
        }
        else
        {
                // create post
                $this->data['title'] = "title";
                $this->data['content'] = "content";
                //$this->data['publish_date'] = "";
                $this->data['media_url'] = "media_url";


        }
    }
}
?>

Модель:

<?php
class Generator extends AppModel {
    var $name = 'Generator';
    var $displayField = 'title';
}
?>

1 Ответ

1 голос
/ 12 декабря 2010

В следующей строке:

<?php echo $this->Form->create('Generator'); ?>

Первый параметр представляет модель, которой принадлежит форма.Это форматирует имена полей как data[Generator][field_name].Итак, при настройке ваших данных вам нужно позаботиться об этом:

function posts() {
    if (!empty($this->data)) {
        ...
    } else {
        $this->data = array(
            'Generator' => array(
                'title' => 'title',
                'content' => 'content',
                'media_url' => 'media_url'
            )
        );
    }
}

Дайте мне знать, если это работает.

...