Please help me out
I have add and edit function together in controller. I have the following fields in my ctp file : say for example album name,album cover and influenced by. When I tried to edit either album name or influenced by the image which was already there gets deleted and ask to re upload.I don't want that.
when I edit either album name it should me directed to index page
This is my code in controller :
function addalbum($id = null)
{
$this->checkMusicianLogin();
$this->layout = "layout_musician";
App::import('Model', 'Album');
$this->Album = new Album();
$musicians_id=$this->Session->read('user_id');
if(!empty($id) || !empty($this->data['Album']['id']))
{
$this->pageTitle = "Edit Album";
$this->set("pageTitle","Edit Album");
$mode = "edit";
$this->set('title_for_layout', 'Edit Album');
}
else
{
$this->pageTitle = "Add Album";
$this->set("pageTitle","Add Album");
$mode = "add";
$this->set('title_for_layout', 'Add Album');
}
//$id = "";
//print_r($this->data['Album']['coverimage']);die;
if($this->data)
{
if($mode == "edit" && $this->data['Album']['coverimage']['size']<=0)
{
unset($this->data['Album']['coverimage']);
}
$this->Album->set($this->data);
$validate = $this->Album->validates();
if($validate)
{
/* if(!isset($this->data['Album']['coverimage'])||(!empty($this->data['Album']['coverimage']) && $this->data['Album']['coverimage']['size']>0)) */
if(!empty($this->data['Album']['coverimage']) && $this->data['Album']['coverimage']['size']>0)
{
$album_title=$this->data['Album']['title'];
$fileOK = $this->uploadFiles('upload/albums/'.$musicians_id.'/'.$album_title,$this->data['Album']['coverimage']);
$this->data['Album']['coverimage']=$fileOK['urls'][0];
if(isset($fileOK['errors']['0']))
{
$this->Session->setFlash("<div class='success-message flash notice'>".$fileOK['errors']['0']."</div>");
}
$mrClean = new Sanitize();
$this->data['Album']['title']=$this->data['Album']['title'];
$this->data['Album']['coverimage']=$this->data['Album']['coverimage'];
$this->data['Album']['musician']=$musicians_id;
$this->Album->save($this->data['Album']);
if($id!='')
{
$lastid=$id;
}
else
{
$lastid=$this->Album->getLastInsertId();
}
if($this->Album->getLastInsertId())
{
$this->Session->setFlash("<div class='success-message flash notice'>Album has been Added successfully.</div>");
}
else
{
$this->Session->setFlash("<div class='success-message flash notice'>Album has been updated successfully.</div>");
}
$this->redirect('albums');
}
else
{
$this->Session->setFlash("<div class='success-message flash notice'>Please Select a Cover for your Album..</div>");
}
}
}
elseif(isset($id) && is_numeric($id))
{
$this->data = $this->Album->findById($id);
if($this->data['Album']['id']==$id)
{
$attribute = $this->Album->find('all',
array(
'fields' =>array('Album.*'),
'conditions'=> array('Album.id' => trim($id))
)
);
}
pr($this->data);
if(is_array($this->data))
{
$id = $this->data['Album']['id'];
}
}
$this->set('id',$id);
}
and this is my ctp file
<?php
echo $javascript->link('ckeditor/ckeditor.js');
?>
<script type="text/javascript">
</script>
<div>
<div class="header content-header">
<h2 class="heading"><?php echo ($id != "")?"Edit":"New"; ?> Album</h2>
</div>
<div class="section content-body form_content">
<?php echo $session->flash(); ?>
<?php echo $form- >create('Musician',array('action'=>'addalbum','method'=>'POST','onsubmit' => '',"class"=>"longFieldsForm", 'type'=>'file')); ?>
<ul>
<li>
<div class="clear"></div>
</li>
<li>
<div class="label"><span class="star">*</span>Album Name</div>
<div class="input_box"><?php echo $form->input("Album.title",array("class"=>"string login-input","label"=>false,"div"=>false));?></div>
<div class="clear"></div>
</li>
<li>
<div class="label"><span class="star"> </span> </div>
<div class="input_box">
<?php if(!empty($this->data['Album']['coverimage'])){ $image = $this->data['Album']['coverimage']; $path = BASE_URL.$image;}else{$path="";} ?>
<img src="<?php echo $path; ?>" width="240" height="200" />
</div>
<div class="clear"></div>
</li>
<li>
<div class="label"><span class="star">*</span>Album Cover</div>
<div class="input_box"><?php echo $form->file("Album.coverimage",array("class"=>"string login-input","label"=>false,"div"=>false));?></div>
<div class="clear"></div>
</li>
<li>
<div class="label"><span class="star">*</span>Album Price(£)</div>
<div class="input_box"><?php echo $form->input("Album.price",array("class"=>"string login-input","label"=>false,"div"=>false));?></div>
<div class="clear"></div>
</li>
<li>
<div class="label"><span class="star">*</span>Influenced By<span style="font-size:10px"><br />Which artist (make sure they`re fairly popular!) is your music most similar too? </span></div>
<div class="input_box"><?php echo $form->input("Album.influencedby",array("class"=>"string login-input","label"=>false,"div"=>false));?></div>
<div class="clear"></div>
</li>
<li>
<div class="label"> </div>
<div class="input_box">
<?php
echo $form->hidden("Album.id",array("value"=>$id));
echo $form->submit('Save',array('class'=>"button submit-button",'div'=>false))." ";
echo $form->button('Cancel',array('type'=>'button','class'=>"button submit-button",'div'=>false,'onclick'=>"location.href='".BASE_URL."/musicians/albums'"));
?>
</div>
<div class="clear"></div>
</li>
</ul>
<?php echo $form->end();?>
</div>
I am not able to do it,please help me out