2010-12-12 4 views
0

私は、テーブルにスローされるデフォルト値を生成したフォームを使ってcakephpアプリケーションを作成しています(現時点では、これが解決されるまでプレースホルダデータのみです)。フォームは正常にレコードを挿入しますが、何らかの理由でフォームがデフォルト値の最初の文字のみを使用しています。たとえば、「タイトル」は文字「t」のみをフォームに含み、「コンテンツ」は「c」しか含みません。cakephpデフォルト値は最初の文字のみを使用します

私はpr($ this-> data)を使用すると、すべてのプレースホルダーデータがそこにあります。私はそれらを編集し、保存されたテキストを追加することができますので、フォームフィールドの長さの問題ではありません。 $ this-> dataと$ this-> Form-> inputの間のどこかで、デフォルトは切り捨てられています。私はこれをトラブルシューティングする場所を知らない。私はここで何も見つけることができませんでした。私は、この問題についてグーグルでしか言及できませんでしたが、解決されませんでした。

CakePHPの1.3.6、PHP 5.3.3、Linuxのあなたの助けのための

おかげPRの

結果(の$ this - >データ):

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"; 


     } 
    } 
} 
?> 

モデル:次の行で

答えて

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

<?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' 
      ) 
     ); 
    } 
} 

この機能が動作するかどうかを教えてください。

+0

ビンゴ、超高速応答のおかげで、再びその間違いをしないだろう –

+0

@ジョン - それが働いて嬉しい:) – RabidFire

関連する問題