Why don't you put this getMeta method inside your model or create a
behavior?

--

Thiago Belem

Enviado do meu Android (e sujeito a erros do corretor automático)
Em 09/04/2012 22:24, "creat1v1ty" <[email protected]> escreveu:

> Thanks again euromark - I've taken your advice and tips and created a SEO
> Component, which I feel is the best solution. It keeps my MVC conventions
> in tact and hopefully is a more efficient way of doing what I need to do.
>
> Here is what I have now:
>
> *SeoComponent.php*
> =================================
> public function getTags($page) {
>     App::import('Model', 'Meta');
>     $Model = ClassRegistry::init('Meta');
>     $seo_data = $Model->find('first', array('conditions' =>
> array('Meta.page' => $page)));
>     $seo_tags['title'] = $seo_data['Meta']['title'];
>     $seo_tags['description'] = $seo_data['Meta']['description'];
>     $seo_tags['keywords'] = $seo_data['Meta']['keywords'];
>     return $seo_tags;
> }
>
> *PagesController.php*
> =================================
> public function home($page) {
>     $this->set('page', $page);
>     $this->set('seo_tags', $this->Seo->getTags($page));
> }
>
> *default.ctp*
> =================================
> <?php echo $seo_tags['title']; ?>
> <?php echo $seo_tags['description']; ?>
> <?php echo $seo_tags['keywords']; ?>
>
>
> Please feel free to comment and/or make suggestions on any ways I might be
> able to further refine/improve. Thanks again for all your help!
>
>
>
> On Monday, April 9, 2012 7:33:19 PM UTC-5, euromark wrote:
>>
>> I am not saying you can never break MVC or cake conventions. I do so
>> myself occasionally. But it should have sane reasoning then.
>> In your case it could be also solved using a component which does what
>> you are doing in the view - fetching the data from the model.
>> It could then pass it down to the view level where you only have to
>> display it.
>> That would be in MVC (fetching model data in the view layer is considered
>> breaking it).
>>
>> But your solution simplifies the task. So as long as it doesn't break
>> other (real) things it is not completely wrong to intentionally go down
>> this road.
>>
>>
>>
>> Am Dienstag, 10. April 2012 00:07:24 UTC+2 schrieb creat1v1ty:
>>>
>>> Thanks very much for the insights, euromark. Here is some additional
>>> info based on your questions:
>>>
>>> *Not sure if breaking MVC is really the best way to go here* - breaking
>>> MVC is not something I am doing intentionally. To be completely honest, I
>>> don't know how doing what I'm doing breaks MVC...perhaps you can help me
>>> understand that. My goal is to keep my code as clean and semantic as
>>> possible.
>>>
>>> *Also not sure how you want to pass $page (is it the final url after
>>> routing or the prefix/plugin/controller/action/ string?)* - for the
>>> pages of the site that are managed by the PagesController, I am relying on
>>> the default variable Cake uses ($page), which is set in routes.php.
>>>
>>> *ex:  Router::connect('/about', array('controller' => 'pages', 'action'
>>> => 'display', 'about'));*
>>>
>>> For pages not managed by the PagesController, I am setting the $page
>>> variable for each action in that controller.
>>>
>>> *ex:  $this->set('page', 'contact-index');*
>>>
>>> *If you want people to contribute and discuss your code in detail, you
>>> should open a github rep for it* - I appreciate the tip and will
>>> definitely keep this in mind going forward. With this request, however, the
>>> code I've written is pretty minimal - the extent of it is in my original
>>> post. I do understand, however, that seeing code in its context is much
>>> more efficient.
>>>
>>> *PS: it also sounds like something that could be made a "Seo" plugin to
>>> make it available for multiple apps.* - I agree completely, and would
>>> love to pass something beneficial along to others to use as well. However,
>>> I don't really feel comfortable pitching something that isn't built
>>> correctly, or outside of MVC conventions. Also, I don't really have the
>>> experience with Cake to understand what's needed to build a plugin, and how
>>> I can take what I've done and turn it into one. That being said, I am
>>> definitely open to suggestions and help in doing it.
>>>
>>> Thanks again, euromark.
>>>
>>> On Monday, April 9, 2012 4:31:33 PM UTC-5, euromark wrote:
>>>>
>>>> IF you really need to use a model in this context you should never use
>>>> "new" but ClassRegistry:
>>>>
>>>> $Model = ClassRegistry::init('Meta');
>>>>
>>>> Not sure if breaking MVC is really the best way to go here. But if it
>>>> works for you, nobody will force you to
>>>> undo your obviously working code. Also not sure how you want to pass
>>>> $page (is it the final url after routing or
>>>> the prefix/plugin/controller/**action/ string? both solutions could
>>>> work, might have different pros and cons.
>>>> Other than that it looks fine. I know there are some plugins which do
>>>> it not that much different you do.
>>>>
>>>> Without specific inside in your application there is only so much one
>>>> can suggest.
>>>> Just take the "silence" regarding your thread as a "not beautiful, but
>>>> not really problematic either".
>>>> Everything else is your thing. Not ours.
>>>> If you want people to contribute and discuss your code in detail, you
>>>> should open a github rep for it.
>>>> So others can fork or submit issues. Reading through a lot of code
>>>> without code highlighting is no fun.
>>>>
>>>> PS: it also sounds like something that could be made a "Seo" plugin to
>>>> make it available for multiple apps.
>>>> you never know when you will need it (or others for that matter). Just
>>>> something to think about.
>>>> But then use: `$Model = ClassRegistry::init('Seo.Meta'**);` :)
>>>>
>>>> good luck
>>>> mark
>>>>
>>>>
>>>> Am Montag, 9. April 2012 21:37:51 UTC+2 schrieb creat1v1ty:
>>>>>
>>>>> anyone out there have any suggestions/recommendations for me?
>>>>>
>>>>> Thanks in advance.
>>>>>
>>>>  --
> 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
> [email protected] For more options, visit this group
> at http://groups.google.com/group/cake-php
>

-- 
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
[email protected] For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to