何らかの理由で、画像のアップロードが行われた場合にのみデータが更新されます。したがって、path
を挿入するか、またはstatus
オプションを変更してもデータは更新されません。しかし、banner
がアップロードされ、同時にpath
またはstatus
と変更された場合、path
またはstatus
を更新することができます。しかし、私はコントローラのbanner
のifステートメントにstatus
もpath
も含めてはいけないと思います。誰かが私を啓発してくれますか?ありがとう。バナーがアップロードされた場合にのみ、DBの更新を拒否する入力がほとんどありません。
EDIT#1:
余分な情報は、フォームが、データの約11行を含むことです。どういうわけか第1行は影響を受けません。つまり、banner
がアップロードされていないと、最初の行のpath
とstatus
入力が正常に更新されます。ループに問題があるはずですか?
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));
}
ただし、ファイル自体をエラーなく正常に更新することができます。それは通過できない 'path'と' status'入力です – warmjaijai