Ahh I get it. Thanks very much.

 

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf
Of majna
Sent: Saturday, December 27, 2008 4:19 PM
To: CakePHP
Subject: Re: I am missing something obvious


you can render element from action:
$this->set('data_for_element', $some_data);
$this->render('/elements/my_elmenet');

On Dec 27, 10:03 pm, Steven Wright <[email protected]> wrote:
> I may have partially solved this using Ajax. But now I have a 
> question. How do I get the content of an element in side of my model 
> to pass back to the view?
>
> $this->set('mydivcontent', SOME ELEMENT); // somehow get the content 
> for the element here?
>
> Thanks.
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On 
> Behalf
>
> Of majna
> Sent: Saturday, December 27, 2008 2:12 PM
> To: CakePHP
> Subject: Re: I am missing something obvious
>
> This line iw wrong:
>  <td>
>    <?php echo $html->link('delete', 'ingredient_list/delete'); ?> 
> </td> This is link not button, Your delete() method expects id as param:
>  $html->link('delete', 'ingredient_list/delete/$id'); ($id or your 
> $index)
>
> On Dec 27, 7:11 pm, "[email protected]"
> <[email protected]> wrote:
> > I dont know why I cant wrap my head around this. I have been doing 
> > LAMP development for years yet CakePHP basics seem to be escaping me.
> > So here it is. I am working on a recipe management application. A 
> > recipe's ingredient list is stored in the ingredients_list table. I 
> > am having an issue figuring out how to add another ingredient in the 
> > add recipe view and how to add or delete another ingredient in the 
> > edit recipe view.
>
> > To add a new ingredient to the recipe I should just hit a button 
> > that adds a new line to the form with all the fields needed for the 
> > ingredient. I cant seem to figure out the right strategy using Cake. 
> > I can do it with Javascript but thats not really the point.
>
> > To delete an ingredient there should be a button next to the line 
> > item in the recipe view that calls a delete method on the 
> > ingredient_list controller and then returns you to the recipe view that
you were in.
> > When I call the delete method on the ingredient I get the following 
> > from CakePHP:
>
> > Missing Method in RecipesController
>
> > Error: The action ingredient_list is not defined in controller 
> > RecipesController
>
> > Error: Create RecipesController::ingredient_list() in file: app 
> > \controllers\recipes_controller.php.
>
> > But I dont think that the delete method belongs there.
>
> > Help is much appreciated thanks.
>
> > Code.
>
> > RECIPES CONTROLLER
>
> > <?php
> > class RecipesController extends AppController {
> >         /*
> >         Make sure that if you add another controller that you put 
> > the current controller
> >         in the array as well or it wont be found.
> >         */
>
> >         var $uses = array('Recipe', 'RecipeType', 'Ingredient', 
> > 'MeasurementType', 'IngredientList');
>
> >         function index()
> >         {
> >                 $this->set('recipes', $this->Recipe->findAll());
> >                 $this->pageTitle = 'Recipes';
> >                 $this->layout = 'default';
> >         }
>
> >         function view($id = null)
> >         {
> >                 $this->Recipe->id = $id;
> >                 $this->set('recipe', $this->Recipe->read());
> >         }
>
> >         function add()
> >         {
> >                 $this->set_recipe_types();
> >                 $this->set_ingredients();
> >                 $this->set_measurement_types();
>
> >                 if (!empty($this->data))
> >                 {
> >                         if ($this->Recipe->saveAll($this->data))
> >                         {
> >                                 $this->flash('Your recipe has been 
> > saved.', '/recipes');
> >                         }
> >                 }
> >         }
>
> >         function edit($id = null)
> >         {
> >                 $this->Recipe->id = $id;
> >                 $this->set_recipe_types();
> >                 $this->set_ingredients();
> >                 $this->set_measurement_types();
>
> >                 $list = $this->IngredientList->find('all', array 
> > ('recipe_id' => $id));
>
> >                 //debug($list, true);
>
> >                 foreach($list as $item)
> >                 {
> >                         
> > //debug($item['IngredientList']['recipe_id'],
> > true);
> >                         if($item['IngredientList']['recipe_id'] ==
> > $id)
> >                         {
> >                                 $ing_list[] = $item;
> >                         }
> >                 }
>
> >                 $this->set('ingredient_list', $ing_list);
>
> >                 if (empty($this->data))
> >                 {
> >                         $this->data = $this->Recipe->read();
> >                 }
> >                 else
> >                 {
> >                         if ($this->Recipe->saveAll($this->data))
> >                         {
> >                                 $this->flash('Your recipe has been 
> > updated.','/recipes');
> >                         }
> >                 }
> >         }
>
> >         function delete($id)
> >         {
> >                 $this->Recipe->del($id);
> >                 $this->flash('The recipe with id: '.$id.' has been 
> > deleted.', '/ recipes');
> >         }
>
> >         private function set_recipe_types()
> >         {
> >                 $this->set('recipe_types', 
> > $this->RecipeType->find('list', array 
> > ('fields'=>'RecipeType.recipe_type',
> > 'order'=>'RecipeType.recipe_type')));
> >         }
>
> >         private function set_ingredients()
> >         {
> >                 $this->set('ingredients', 
> > $this->Ingredient->find('list', array ('fields'=>'ingredient', 
> > 'order'=>'ingredient')));
> >         }
>
> >         private function set_measurement_types()
> >         {
> >                 $this->set('measurement_types', 
> > $this->MeasurementType->find('list',
> > array('fields'=>'measurement_type', 'order'=>'measurement_type')));
> >         }
>
> > }
>
> > ?>
>
> > INGREDIENT ELEMENT
>
> >         <tr id="ingredient_<?php echo $index; ?>">
> >                 <td>
> >                         <?php
> >                         echo $form->input('IngredientList.'. $index 
> > .'.amount');
> >                         echo
> > $form->input('IngredientList.'.$index.'.id', array 
> > ('type'=>'hidden'));
> >                         ?>
> >                 </td>
> >                 <td>
> >                         <?php
> >                         echo $form->label('IngredientList.'.
> > $index .'.measurement_type_id', 'Measurement Type');
> >                         echo $form->select('IngredientList.'.
> > $index .'.measurement_type_id', $measurement_types);
> >                         ?>
> >                 </td>
> >                 <td>
> >                         <?php echo $form->input('IngredientList.'.
> > $index .'.description'); ?>
> >                 </td>
> >                 <td>
> >                         <?php
> >                         echo $form->label('IngredientList.'. $index 
> > .'.ingredient_id', 'Ingredient');
> >                         echo $form->select('IngredientList.'. $index 
> > .'.ingredient_id', $ingredients);
> >                         ?>
> >                 </td>
> >                 <td>
> >                         <?php echo $html->link('delete', 
> > 'ingredient_list/delete');       ?>
> >                 </td>
>
> >         </tr>
>
> > EDIT RECIPE VIEW
>
> > <h1>Edit Recipe</h1>
> > <?php
> > echo $form->create('Recipe', array('action' => 'edit')); echo 
> > $form->input('Recipe.id', array('type'=>'hidden')); echo 
> > $form->input('Recipe.recipe'); echo $form->input('Recipe.servings', 
> > array('maxlength' => 5, 'size' => 5)); echo 
> > $form->label('Recipe.servings', 'Recipe Type'); echo 
> > $form->select('Recipe.recipe_type_id', $recipe_types); ?> <div> 
> > <h2>Ingredient List</h2> <table id="ingredient_list"> <?php $x = 0; 
> > foreach($ingredient_list as $ingredient) {
> >         echo $this->element('add_ingredient', array('index' => $x));
> >         $x++;}
>
> > ?>
> > </table>
> > <h2>Instructions and Description</h2> <?php echo 
> > $form->input('Recipe.description', array('rows' => '3')); echo 
> > $form->input('Recipe.instructions', array('rows' => '3')); echo 
> > $form->end('Save Recipe'); ?>
>
> > ADD RECIPE VIEW
>
> > <h1>Add Recipe</h1>
> > <?php
> > echo $form->create('Recipe');
> > echo $form->input('Recipe.recipe');
> > echo $form->input('Recipe.servings', array('maxlength' => 5, 'size' 
> > => 5)); echo $form->label('Recipe.servings', 'Recipe Type'); echo 
> > $form->select('Recipe.recipe_type_id', $recipe_types); ?> <div> 
> > <h2>Ingredient List</h2> <table id="ingredient_list"> <?php 
> > for($index = 0; $index < 10; $index ++) {
> >         echo $this->element('add_ingredient', array('index' => 
> > $x));}
>
> > ?>
> > </table>
> > <h2>Instructions and Description</h2> <?php echo 
> > $form->input('Recipe.description', array('rows' => '3')); echo 
> > $form->input('Recipe.instructions', array('rows' => '3')); echo 
> > $form->end('Save Recipe'); ?>


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to