/**
 * Dvds Controller
 *
 * file: /app/controllers/dvds_controller.php
 */

**i build dvd script for dvds library.. when i want to edit dvds
details the image i have uploded dont display but when i see databse
table i see it is already into this table and i find the image in the
webroot img folder (dvds)..so how to show image to edit it?

Dvds Controller

 <?php


class DvdsController extends AppController {
    // good practice to include the name variable
    var $name = 'Dvds';

    // load any helpers used in the views
    var $helpers = array('Html', 'Form', 'Javascript', 'Misc');

    // global ratings variable
    var $ratings = array('0'=>'0', '1'=>'1', '2'=>'2', '3'=>'3',
'4'=>'4', '5'=>'5', '6'=>'6', '7'=>'7', '8'=>'8', '9'=>'9',
'10'=>'10');

    /**
     * index()
     * main index page for dvds
     * url: /dvds/index
     */
    function index() {
        // get all dvds from database where status = 1
        //$dvds = $this->Dvd->find("Dvd.status=1", null, "Dvd.name");
     $dvds = $this->Dvd->find('all', array('conditions' =>
array('Dvd.status' => '1')));
        // save the dvds in a variable for the view
        $this->set('dvds', $dvds);
    }

    /**
     * view()
     * displays a single dvd and all related info
     * url: /dvds/view/dvd_slug
     */
    function view($slug) {
        // if slug is null
        if(!$slug) {
            // set a flash message
            $this->Session->setFlash('Invalid slug for DVD',
'flash_bad');
            // redirect user
            $this->redirect(array('action'=>'index'));
        }

        // find dvd in database
        $dvd = $this->Dvd->findBySlug($slug);

        // if dvd has been found
        if(!empty($dvd)) {
            // set the dvd for the view
            $this->set('dvd', $dvd);
        } else {
            // set a flash message
            $this->Session->setFlash('Invalid slug for DVD',
'flash_bad');
            // redirect user
            $this->redirect(array('action'=>'index'));
        }
    }

    /**
     * admin_index()
     * main index page for admin users
     * url: /admin/dvds/index
     */
    function admin_index() {
        // get all dvds from database where status = 1, order by dvd
name
       //   $dvds = $this->Dvd->findAll("Dvd.status=1", null,
"Dvd.name");
        $dvds = $this->Dvd->find('all', array('conditions' =>
array('Dvd.status' => '1')));

        // save the dvds in a variable for the view
        $this->set('dvds', $dvds);
    }

    /**
     * admin_add()
     * allows an admin to add a dvd
     * url: /admin/dvds/add
     */
    function admin_add() {
        // if the form data is not empty
        if (!empty($this->data)) {
            // check for image
            $image_ok = $this->_upload_image();

            // if the image was uploaded successfully
            if($image_ok) {
                // initialise the Dvd model
                $this->Dvd->create();

                // create the slug
                $this->data['Dvd']['slug'] = $this->slug($this-
>data['Dvd']['name']);

                // check for a dvd with the same slug
                $dvd = $this->Dvd->find('first', array(
                    'conditions' => array(
                        'Dvd.slug'=>$this->data['Dvd']['slug'],
                        'Dvd.status' => '1'
                    )
                ));

                // if slug is not taken
                if(empty($dvd)) {
                    // try saving the dvd
                    if ($this->Dvd->save($this->data)) {
                        // set a flash message
                        $this->Session->setFlash('The DVD has been
saved', 'flash_good');

                        // redirect
                        $this->redirect(array('action'=>'index'));
                    } else {
                        // set a flash message
                        $this->Session->setFlash('The DVD could not be
saved. Please, try again.', 'flash_bad');
                    }
                } else {
                    // set a flash message
                    $this->Session->setFlash('The DVD could not be
saved. The Name has already been taken.', 'flash_bad');
                }
            }
        }

        // find dvd options in a list format
        // new 1.2 feature, can also have 'count' and 'first'
        $formats    = $this->Dvd->Format->find('list');
        $types      = $this->Dvd->Type->find('list');
        $locations  = $this->Dvd->Location->find('list');
        $ratings    = $this->ratings;

        // set the variables so they can be accessed from the view
        $this->set(compact('formats', 'types', 'locations',
'ratings'));
    }

    /**
     * admin_edit()
     * allows an admin to edit a dvd
     * url: /admin/dvds/edit/id
     */
    function admin_edit($id = null) {
        // if the id is null and the form data empty
        if (!$id && empty($this->data)) {
            // set a flash message
            $this->Session->setFlash('Invalid Dvd', 'flash_bad');
            // redirect the admin
            $this->redirect(array('action'=>'index'));
        }

        // if the form was submitted
        if (!empty($this->data)) {
            // check for image
            $image_ok = $this->_upload_image();

            // if the image was uploaded successfully
            if($image_ok) {
                // create the slug
                $this->data['Dvd']['slug'] = $this->slug($this-
>data['Dvd']['name']);

                // check for a dvd with the same slug
                $dvd = $this->Dvd->find('first', array(
                    'conditions' => array(
                        'Dvd.slug'=>$this->data['Dvd']['slug'],
                        'Dvd.status' => '1'
                    )
                ));

                // if slug is not taken
                if(empty($dvd) || $dvd['Dvd']['id'] == $id) {
                    // try to save the Dvd
                    if ($this->Dvd->save($this->data)) {
                        // set a flash message
                        $this->Session->setFlash('The Dvd has been
saved', 'flash_good');
                        // redirect the admin
                        $this->redirect(array('action'=>'index'));
                    } else {
                        // set a flash message
                        $this->Session->setFlash('The Dvd could not be
saved. Please, try again.', 'flash_bad');
                    }
                } else {
                    // set a flash message
                    $this->Session->setFlash('The DVD could not be
saved. The Name has already been taken.', 'flash_bad');
                }
            }
        } else {
            // find the DVD from the database and save it in the data
array
            $this->data = $this->Dvd->read(null, $id);
        }

        // find dvd options from database in a list
        $formats    = $this->Dvd->Format->find('list');
        $types      = $this->Dvd->Type->find('list');
        $locations  = $this->Dvd->Location->find('list');
        $ratings    = $this->ratings;
        $this->set(compact('formats','types','locations', 'ratings'));
    }

    /**
     * admin_delete()
     * allows an admin to delete a dvd
     * url: /admin/dvds/delete/1
     */
    function admin_delete($id = null) {
        // if the id is null
        if (!$id) {
            // set flash message
            $this->Session->setFlash('Invalid id for Dvd',
'flash_bad');
            // redirect
            $this->redirect(array('action'=>'index'));
        }

        // set the id of the dvd
        $this->Dvd->id = $id;

        // try to change status from 1 to 0
        if ($this->Dvd->saveField('status', 0)) {
            // set flash message
            $this->Session->setFlash('The Dvd was successfully
deleted.', 'flash_good');
        } else {
            // set flash message
            $this->Session->setFlash('The Dvd could not be deleted.
Please try again.', 'flash_bad');
        }

        // redirect
        $this->redirect(array('action'=>'index'));
    }

    /**
     * upload_image()
     * private function to upload a file if it exists in the form
     */
    function _upload_image() {
        // init
        $image_ok = TRUE;

        // if a file has been added
        if($this->data['File']['image']['error'] != 4) {
            // try to upload the file
    $result = $this->upload_files('img/dvds', $this->data['File']);

            // if there are errors
            if(array_key_exists('errors', $result)) {
                // set image ok to false
                $image_ok = FALSE;
                // set the error for the view
                $this->set('errors', $result['errors']);
            } else {
                // save the url
                $this->data['Dvd']['image'] = $result['urls'][0];
            }
        }

    return $image_ok;
    }
}

?>

and the view file is

<div class="dvds form">

<?php
// if there was an error uploading the file then display errors here
if(isset($errors)) {
    echo $misc->display_errors($errors);
}
?>

<?php echo $form->create('Dvd', array('type'=>'file'));?>
    <fieldset>
        <legend>Edit a Dvd</legend>
        <?php
        // create the form inputs

        // include the id of the DVD as a form input
        // CakePHP will automatically create this as a hidden element
        echo $form->input('id');
        echo $form->input('name', array('label'=>'Name: *'));
        echo $form->input('format_id', array('label'=>'Format: *',
'type'=>'select', 'options'=>$formats));
        echo $form->input('type_id', array('label'=>'Type: *',
'class'=>'type_select'));
        echo $form->input('location_id', array('label'=>'Location:
*'));

        // display image if it exists
        if(!empty($this->data['Dvd']['image'])): ?>
        <div class="input">
            <label>Current Image:</label>
<img src="/<?php echo $this->data['Dvd']['image']; ?>" width="100" />
        </div>
        <?php endif;

        echo $form->input('File.image', array('label'=>'Image:',
'type'=>'file'));
        echo $form->input('rating', array('label'=>'Rating:'));
        echo $form->input('website', array('label'=>'Website URL:'));

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to