2017-12-13 12 views
0

몇 가지 이유 때문에 이미지 업로드가 발생하는 경우에만 데이터가 업데이트됩니다. 따라서 path 만 삽입하거나 status 옵션을 변경하면 데이터가 업데이트되지 않습니다. 하지만 banner 중 하나를 업로드하고 path 또는 status을 동시에 변경하면 path 또는 status을 업데이트 할 수 있습니다. 하지만 난 컨트롤러의 banner의 if 문에 status이나 path을 포함한다고 생각하지 않습니다. 누군가 내게 계몽 수 있습니까? 감사.배너가 업로드 된 경우에만 입력 업데이트가 데이터베이스 업데이트를 거부합니다.

수정 # 1 :

추가 정보는 양식 데이터의 약 11 행을 포함한다는 것이다. 어떻게 든 첫 번째 행은 영향을받지 않습니다. 즉, banner 업로드없이 첫 번째 행에 대한 pathstatus 입력이 성공적으로 업데이트 될 수 있습니다. 루프에 문제가 있습니까?

Controller.php

function updateHeaderAction(Request $request){ 
     ini_set('max_file_uploads', 33); 
     $data = $_FILES; 
     $formData = $request->request->all(); 
     $name = array(
      1=>'right1', 
      2=>'right2', 
      3=>'right3', 
      4=>'right4', 
      5=>'right5', 
      6=>'right6', 
      7=>'right7', 
      8=>'right8', 
      9=>'right9', 
      10=>'right10', 
      11=>'logo', 

     ); 
     end($data['banner']['name']); 
     $key = key($data['banner']['name']); 
     $a = array(); 
     for($i=0;$i<=$key;$i++){ 
      if(isset($data['banner']['name'][$i])){ 
       if(isset($data['banner']['name'][$i][0])){ 
        $img = $this->forBannerUpload('banner','storage/header/en/',null,null,true,$i,0,true,$name[$i+1]); 
        $a[$i+1]['en'] = $img; 
       }else{ 
        $img = null; 
        $a[$i+1]['en'] = null; 
       } 
       if(isset($data['banner']['name'][$i][1])){ 
        $img_zh = $this->forBannerUpload('banner','storage/header/hk/',null,null,true,$i,1,true,$name[$i+1]); 
        $a[$i+1]['hk'] = $img; 
       }else{ 
        $img_zh = null; 
        $a[$i+1]['hk'] = null; 
       } 
       if(isset($data['banner']['name'][$i][2])){ 
        $img_cn = $this->forBannerUpload('banner','storage/header/cn/',null,null,true,$i,2,true,$name[$i+1]); 
        $a[$i+1]['cn'] = $img; 
       }else{ 
        $img_cn = null; 
        $a[$i+1]['cn'] = null; 
       } 
      } 
       $status = $formData['status'][$i]; 
       $path = $formData['path'][$i]; 
       $query = new HeaderModule($this->app); 
       $query->updateHeader($i+1,$img,$img_zh,$img_cn,$status,$path); 
//   $a[] = $name[] 
//   $a[$i] = $name[$id[$i]]; 
//   $img = $this->uploadImageAction('banner','storage/page_banner/',null,null,true,$id[$i],true,$name[$id[$i]]); 
//   $this->app['query']->updateBanner($id[$i],$img); 
     } 
// 
//  ob_start(); 
//  var_dump($a); 
//  return ob_get_clean(); 
     return true; 
    } 

HTML

{% for key,item in data %} 
<tr> 
    <td class="hidden-xs-portrait"> 
     <div> 
      <div class="ea_flag"></div> 
      {{ item.name }} 
     </div> 
    </td> 
    <td class="hidden-xs-portrait"> 
     {% if item.header_img_src is not null and item.header_img_src is not empty %} 
      <div> 
       <div class="es_flag" style="top: 1px;"></div> 
       <div>EN:</div> 
       <img src="{{ app.request.baseUrl }}/{{ item.header_img_src }}" width="150" /> 
      </div> 
     {% endif %} 
     {% if item.header_img_src_zh is not null and item.header_img_src_zh is not empty %} 
      <div> 
       <div class="hs_flag" style="top: 1px;"></div> 
       <div>HK:</div> 
       <img src="{{ app.request.baseUrl }}/{{ item.header_img_src_zh }}" width="150" /> 
      </div> 
     {% endif %} 
     {% if item.header_img_src_cn is not null and item.header_img_src_cn is not empty %} 
      <div> 
       <div class="cs_flag" style="top: 1px;"></div> 
       <div>CN:</div> 
       <img src="{{ app.request.baseUrl }}/{{ item.header_img_src_cn }}" width="150" /> 
      </div> 
     {% endif %} 
    </td> 
    <td> 
     {#<input type="file" class="image-upload" name="banner[1]" >#} 
     <div class="ea_flag"></div> 
     <input type="file" class="image-upload" name="banner[{{key}}][0]"> 
     <div class="ha_flag"></div> 
     <input type="file" class="image-upload" name="banner[{{key}}][1]"> 
     <div class="ca_flag"></div> 
     <input type="file" class="image-upload" name="banner[{{key}}][2]"> 
     <label for="programme-status" class="control-label">Programme Status:</label> 
     <select required="required" name="status[{{key}}]" class="form-control programme-status header-status"> 
      {% if item.status == 0 %} 
      <option value="0" selected>Hidden</option> 
      <option value="1">Show</option> 
      {% else %} 
      <option value="0">Hidden</option> 
      <option value="1" selected>Show</option> 
      {% endif %} 
     </select> 

     <div class="en_flag"></div><label style="position: relative; margin-left:25px;" for="programme-link-description" class="control-label ">Hyperlink:</label> 
     <div class="controls form-group"> 
      <input type="text" class="form-control header-path" name="path[{{key}}]" value="{{item.path}}"> 
     </div> 
    </td> 
</tr> 
{% endfor %} 

Module.php

function updateHeader($id,$img,$img_zh,$img_cn,$status,$path){ 
    if($img!=null){ 
     $sql['header_img_src'] = $img; 
    } 
    if($img_zh!=null){ 
     $sql['header_img_src_zh'] = $img_zh; 
    } 
    if($img_cn!=null){ 
     $sql['header_img_src_cn'] = $img_cn; 
    } 
    $sql['path'] = $path; 
    $sql['status'] = $status; 
    return $this->app['db']->update('header',$sql, array('id' => (int)$id)); 
} 

답변