It's been a while (pre Cake 2.x) since I did anything with HABTM
checkboxes, but I believe the new syntax is simply:

$this->Form->input('Location', ...

On Thu, Mar 7, 2013 at 7:14 AM, Jerome Walitzek
<jerome.walit...@t-online.de> wrote:
> Hi there,
>
> at the moment i have still no success and the same problem.
>
> I have created a new views. Everything works fine. But still the same
> problem that only the event.id will stored into the table. the location_id
> will not stored.
>
> Any ideas ?
>
> EventLocationsController.php
> function add($id = null) {
> if (!empty($this->data)) {
> $this->EventLocation->create();
> if ($this->EventLocation->save($this->data)) {
> $this->Session->setFlash(__('The Post has been saved.', true));
> $this->redirect(array('action'=>'add',$this->EventLocation->id));
> } else {
> $this->Session->setFlash(__('The Post could not be saved. Please, try
> again.', true));
> }
> }
> if (empty($this->data)) {
> $this->data = $this->EventLocation->read(null, $id);
> }
> $events = $this->EventLocation->Event->find('all');
> $this->set(compact('events'));
> }
>
> public function locations($city_id) {
> $this->layout = NULL;
> $locations = $this->EventLocation->Location->find('list', array('conditions'
> => array('Location.city_id' => $city_id)));
>                 $this->set(compact('locations'));
> }
>
> Model/EventLocation.php
> public $belongsTo = array(
> 'Event' => array(
> 'className' => 'Event',
> 'foreignKey' => 'event_id',
> 'conditions' => '',
> 'fields' => '',
> 'order' => ''
> ),
> 'Location' => array(
> 'className' => 'Location',
> 'foreignKey' => 'location_id',
> 'conditions' => '',
> 'fields' => '',
> 'order' => ''
> )
> );
> var $hasAndBelongsToMany = array(
> 'Location' => array(
> 'className' => 'Location',
> 'joinTable' => 'EventLocations',
> 'foreignKey' => 'event_id',
> 'associationForeignKey' => 'location_id',
> //'with' => 'PostToTag',
> ),
> );
>
> View/add.ctp
> <?php
> echo $this->Html->script('http://code.jquery.com/jquery-1.9.1.min.js');
> ?>
> <div class="eventLocations form">
> <?php echo $this->Form->create('EventLocation'); ?>
> <fieldset>
> <legend><?php echo __('Add Event Location'); ?></legend>
> <?php
> $select_value = array();
> foreach($events as $event) {
> $key = $event['Event']['id'];
> $cityid = $event['Event']['city_id'];
> $value = $event['Event']['name'];
> $select_value[$cityid] = $value;
> }
>
> $mydata = $this->data;
> echo $this->Form->select('event_id', $select_value, array('label'=>
> 'Veranstaltung'));
> echo $this->Js->writeBuffer();
> ?>
> <div id="locations"></div>
> </fieldset>
> <?php echo $this->Form->end(__('Submit')); ?>
> </div>
>
> <script typ="text/javascript">
> $("#EventLocationEventId").click(function(){
>    var cityid = $("#EventLocationEventId").val();
>    $.get("/evants/EventLocations/locations/"+ cityid,
> function(data) {
> $('#locations').fadeOut("fast", function() {
>   $('#locations').html(data);
>   $('#locations').fadeIn("fast");
> });
> });
>    return false;
> });
> </script>
>
> View/locations.ctp
> <?php
> echo $this->Form->input('EventLocation.location_id',array(
>         'label' => __('Location',true),
>         'type' => 'select',
>         'multiple' => 'checkbox',
>         'options' => $locations,
>     ));
> ?>
>
> Am Mittwoch, 6. März 2013 16:03:55 UTC+1 schrieb Jerome Walitzek:
>>
>> Hi there,
>>
>> i have following tables
>>
>> Events
>> Cities
>> Locations
>> EventLocations
>>
>> When i edit an Event i can select the city (city_id) where the event is.
>> But every City has more than one location which i get over AJAX.
>> That works Great.
>> But now i want to store the locations which i have "checkboxed" into the
>> table "event_locations"
>> How can i do that ?
>>
>> Any ideas ?
>>
>> Here is my Code:
>> edit.ctp
>> <?php
>> echo $this->Form->input('city_id');
>> echo $this->Js->writeBuffer();
>> ?>
>>
>> <div id="target-div"></div>
>>
>> <script typ="text/javascript">
>> $("#EventCityId").click(function(){
>>    var cityid = $("#EventCityId").val();
>>    $.get("/events/fetch/"+ cityid,
>> function(data) {
>> $('#target-div').fadeOut("fast", function() {
>>   $('#target-div').html(data);
>>   $('#target-div').fadeIn("fast");
>> });
>> });
>>    return false;
>> });
>> </script>
>>
>> EventsController.php
>> public function fetch($city_id) {
>> $locations = $this->Event->Location->findAllByCityId($city_id);
>> $this->set('locations', $locations);
>> }
>>
>> fetch.ctp
>> <?php
>> $select_value = array();
>> foreach($locations as $location) {
>> $key = $location['Location']['id'];
>> $value = $location['Location']['name'];
>> $select_value[$key]    = $value;
>> }
>> $mydata = $this->data;
>> echo $this->Form->select('Location', $select_value, array('label'=> false,
>> 'multiple' => 'checkbox'));
>> echo $this->Html->link(__('Add another Location'), array('controller' =>
>> 'locations', 'action' => 'add'));
>> ?>
>>
>> Thanks for help
>
> --
> Like Us on FaceBook https://www.facebook.com/CakePHP
> Find us on Twitter http://twitter.com/CakePHP
>
> ---
> You received this message because you are subscribed to the Google Groups
> "CakePHP" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to cake-php+unsubscr...@googlegroups.com.
> To post to this group, send email to cake-php@googlegroups.com.
> Visit this group at http://groups.google.com/group/cake-php?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to cake-php+unsubscr...@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to