have an admin creating songs for another user. You can remove the
user_id hidden field and do this:
function add()
{
/* create var here so it's only read once but
* there's no need to set it for the view
*/
$user_id = $this->Session->read('Auth.User.id');
if (!empty($this->data))
{
/* add current User's ID to data here
*/
$this->data['Song']['user_id'] = $user_id;
$this->Song->create();
if ($this->Song->save($this->data))
{
$this->Session->setFlash(__('The Song has been saved', true));
$this->redirect(array('action'=>'index'));
}
else
{
$this->Session->setFlash(__('The Song could not be saved. Please,
try again.', true));
}
}
$catalogs = $this->Song->Catalog->find(
'list',
array(
'conditions' => array(
'Catalog.user_id' => $user_id
)
)
);
$this->set(compact('catalogs'));
}
I'm assuming that Catalog has a user_id field. If that's not the case,
post your Catalog and Song models.
On Mon, Apr 27, 2009 at 1:36 PM, Teedaddy <bretteegarden@gmail.com> wrote:
>
> Here is my add function for my song_conntroller:
>
> function add() {
> if (!empty($this->data)) {
> $this->Song->create();
> if ($this->Song->save($this->data)) {
> $this->Session->setFlash(__('The Song has been saved', true));
> $this->redirect(array('action'=>'index'));
> } else {
> $this->Session->setFlash(__('The Song could not be saved. Please,
> try again.', true));
> }
> }
> $this->set('user_id', $this->Session->read('Auth.User.id'));
> //$users = $this->Song->User->find('list');
> $catalogs = $this->Song->Catalog->find('list');
> $this->set(compact('catalogs'));
> }
>
>
> I was able to get the User ID to pass to the Add Form with your help
> but where I am confused, is how to get the $catalogs = find array to
> return only the current Auth.User.id related records.
>
> I think if I can get this down, I will be well on my way to finishing
> my project (crossing fingers)!
>
> I appreciate your help greatly....
>
> On Apr 27, 12:27 pm, Teedaddy <bretteegar...@gmail.com> wrote:
>> Sorry, I am assuming it is a similar method since the htlmlink for
>> "New Song" would need to contain the user_id for which I create a new
>> song record. Maybe this is just my old procedural way of thinking
>> hanging on here.
>>
>> Am I assuming correctly that all these user id dependencies need to be
>> programmed into the controllers and not the views or links?
>>
>> I know enough PHP to be dangerous and am not that far along with just
>> a procedural approach but I love the concept of MCV and cakePHP so I
>> want to learn this way of developing from this point forward.
>>
>> Maybe my lack of PHP mastery is making this much harder for me than it
>> should be.
>>
>> Thanks again.
>>
>> On Apr 27, 12:19 pm, brian <bally.z...@gmail.com> wrote:
>>
>> > OK, well that's different than adding the User.id to links. For what
>> > you want to do, you need only add it to the conditions of your find.
>> > There's no need for it to be in the link.
>>
>> > Ditto for editing a record: just check the session and compare it to
>> > the user_id in your data. If it doesn't match, throw up a flash msg
>> > and redirect.
>>
>> > When in the controller, use $this->Session->read(...) and, in the
>> > view, $session->read(...)
>>
>> > On Mon, Apr 27, 2009 at 1:07 PM, Teedaddy <bretteegar...@gmail.com> wrote:
>>
>> > > I basically want all my controller actions to be user specific once a
>> > > user is logged in. I'm getting close and these suggestions have been
>> > > very helpful.
>>
>> > > The main task would be to assure that all related records that are
>> > > returned, found, added, etc, are tied to a specific user.id.
>>
>> > > For instance, the project I am working on is a song catalog. The
>> > > hierarchy is UserGroups -> Users -> Catalogs -> Songs.
>>
>> > > Individual users can have many Catalogs but when the view for Songs is
>> > > displayed or one tries to add a new song, all the records in the DB
>> > > are displayed or all Catalogs from all Users are available in the
>> > > Catalog dropdown form item. I only want the selection choices for
>> > > Catalog to be those of the logged in user. Right now (with Baked views
>> > > and controllers) every Catalog belonging to every user is displayed as
>> > > a possible choice. I also need to make sure only related records
>> > > (keyed by user.id) are shown in all cases.
>>
>> > > Please forgive me if I am not making this as understandable as it
>> > > needs to be. Thanks so much for your help.
>>
>> > > On Apr 27, 10:17 am, brian <bally.z...@gmail.com> wrote:
>> > >> Are you using Auth? What's the route for this URL? This should work:
>>
>> > >> $html->link(
>> > >> 'edit profile',
>> > >> array(
>> > >> 'controller' => 'users',
>> > >> 'action' => 'edit',
>> > >> 'user_id' => $session->read('Auth.User.id')
>> > >> ),
>> > >> array('title' => 'whatever')
>> > >> )
>>
>> > >> If you don't have a route that specifically passes user_id, you can also do:
>>
>> > >> $html->link(
>> > >> 'edit profile',
>> > >> array(
>> > >> 'controller' => 'users',
>> > >> 'action' => 'edit',
>> > >> $session->read('Auth.User.id')
>> > >> ),
>> > >> array('title' => 'whatever')
>> > >> )
>>
>> > >> On Mon, Apr 27, 2009 at 10:34 AM, Teedaddy <bretteegar...@gmail.com> wrote:
>>
>> > >> > Thanks for the response, but this still doesn't answer my question of
>> > >> > how to include this variable in a $htmlhelper link, mainly need to
>> > >> > know the syntax. thanks so much
>>
>> > >> > On Apr 26, 10:36 pm, NegoBlack® <paulomoacir.jun...@gmail.com> wrote:
>> > >> >> I use to do this on my app_controller.php:
>>
>> > >> >> public function beforeFilter(){
>>
>> > >> >> if ($this->Auth->user()){
>> > >> >> $this->set("userInfo", $this->Auth->user())
>> > >> >> }
>>
>> > >> >> }
>>
>> > >> >> Then I can use this var on my views...
>>
>> > >> >> On Apr 25, 7:57 pm, Teedaddy <bretteegar...@gmail.com> wrote:
>>
>> > >> >> > Could someone be so kind to tell me the easiest way to pass the
>> > >> >> > current logged in "Auth" user id in $htmlhelper links?
>>
>> > >> >> > Thank you so much, just learning all this MVC method and have been
>> > >> >> > through Auth tutorials numerous times but I am missing this somehow.
>>
>> > >> >> > Bret
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to cake-php+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---
No comments:
Post a Comment