2013-04-15 3 views
0

Я пытаюсь сохранить поле description с varchar (500) в базе данных. Когда я смотрю на панель Net в firebug, все описание публикуется (более 200 слов). Однако в cakephp сохраняется только 75 слов. Я установил контрольную точку в своем контроллере и посмотрел на эту информацию -> request->, и она имеет около 150 символов. Ниже мой код:Cakephp2.3 Текстовая область неправильно отправляется

<fieldset> 
<legend>Create Log</legend> 
<?php echo $this->Form->Create('Log', array('inputDefaults' => array('div' => false, 'label' => false))); ?> 
    <div class="control-group"> 
     <div class="input-prepend"> 
      <span class="add-on"><i class="icon-folder-open"></i></span> 
      <?php echo $this->Form->input('project_id'); ?> 
     </div> 
    </div> 

    <div class="control-group"> 
     <div class="input-prepend"> 
      <span class="add-on"><i class="icon-user"></i></span> 
      <input type="text" id="txtName" placeholder="Customer" /> 
      <?php echo $this->Form->Hidden('customer_id'); ?> 
      <a><span class="add-on"><i class="icon-plus" style="color: green;" onclick="window.open('<?php echo $this->Html->Url(array('controller' => 'customers', 'action' => 'add?popup')); ?>', 'Add Customer', 'height=630, width=430')"></i></span></a> 
     </div> 
    </div> 

    <div class="control-group"> 
     <div class="input-prepend"> 
      <span class="add-on"><i class="icon-time"></i></span> 
      <?php echo $this->Form->input('time_spent', array('placeholder' => 'Time spent (hrs)')); ?>    
     </div> 
    </div> 

    <div class="control-group"> 
     <div class="input-prepend"> 
      <span class="add-on"><i class="icon-book"></i></span> 
      <?php echo $this->Form->textarea('description', array('placeholder' => 'Description', 'class' => 'logTextArea', 'rows' => '7')); ?> 

     </div> 
    </div> 

<?php echo $this->Form->end(array(
    'label' => 'Save Record', 
    'class' => 'btn btn-primary', 
    'div' => false 
)); ?> 

<?php echo $this->Html->script('jquery.autocomplete', array('inline' => false)); ?> 

<?php $this->start('script'); ?> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     var options, a; 
     jQuery(function() { 
      options = { 
       serviceUrl: "<?php echo $this->Html->Url(array('controller' => 'logs', 'action' => 'autoComplete.json')); ?>", 
       minChars: 2, 
       onSelect: function(suggestion){ $('#LogCustomerId').val(suggestion.data); } 
      }; 
      a = $('#txtName').autocomplete(options); 
     }); 
    }); 
</script> 
<?php $this->end(); ?> 

Контроллер:

public function add() { 
    $this->set('title_for_layout', 'Add log'); 

    // Populate projects DDL 
    $this->set('projects', $this->Log->Project->find('list', array(
     'order' => array('Project.project_name') 
     ))); 

    if ($this->request->is('post')) 
    { 
     $this->Log->create(); 
     if ($this->Log->save($this->request->data)) 
     { 
      $this->Session->setFlash('Log has succesfully been created', 'default', array('class' => 'alert alert-success')); 
      $this->redirect(array('action' => 'index')); 
     } else { 
      $this->Session->setFlash('Unable to save log', 'default', array('class' => 'alert alert-error')); 
     } 
    } 
} 
+0

Как выглядит ваше определение таблицы? Вы пытались очистить кеш-модель cakephp (app/tmp/cache/Models)? Кроме того, установите уровень отладки на 2 и проверьте, какие SQL-запросы выполняются, чтобы проверить, созданы ли правильные запросы. – thaJeztah

+0

Хм, извините, просто понял, что я неправильно понял ваш вопрос, правильно ли понимаю, что данные уже усечены внутри '$ this-> request-> data'? Вы пытались отлаживать/отслеживать необработанные данные '$ _POST'? – thaJeztah

+0

@thaJeztah правильно, что данные уже усечены внутри данных $ this-> request->. Я также проверил необработанные данные $ _POST, и он усечен там. Когда вы говорите, очистить кэш модели, следует ли просто удалить каталог Models? – Andrew

ответ

1

Эта проблема может быть вызвана ошибкой в ​​некоторых версиях PHP, что срезает $_POST значения.

Без повторной публикации информации, этот вопрос содержит дополнительную информацию .

PHP $_POST array variables are truncated

Некоторые из них (возможно), связанные ошибки;

Bug #42824 Post Data truncated

+0

Lol Я только что узнал, что я делаю неправильно. Варчар (500) не 500 слов, это 500 символов. Я до сих пор не знаю, почему он был усечен в Eclipse, но теперь все правильно сохраняется. – Andrew

+0

erm, это была моя первая догадка, но вы упомянули данные «... this-> request-> и у нее около 150 символов» *, подразумевая, что она уже усечена? – thaJeztah

+0

Да, я не знаю, почему так было. Это тоже отбросило меня.Когда я установил свою точку отладки, я проверил $ ​​_POST, $ _REQUEST, $ Globals и $ this в eclipse, и все четыре из этих мест имели в нем усеченные данные. Затем он будет усечен больше после сохранения в db. – Andrew