How can I pass arguments from view to cportlet in Yii? - view

I want to pass some arguments from a view to the cportlet widgets called by this view, but it seems doesn't work when I do it like this:
<?php
$this->beginWidget('zii.widgets.CPortlet');
$this->widget('ProductsBrowser',
array('params'=>$params));
$this->endWidget(); ?>
How can I accomplish it succesfully? Please help me! Thanks!!

Do You read documentation?
http://www.yiiframework.com/doc/guide/1.1/en/extension.use#widget this just should work.

The Correct way is as shown
<?php $this->beginWidget('zii.widgets.CPortlet', array(
'params'=>$params)); ?>
//body content
<?php $this->endWidget(); ?>

Related

How to compare current_url with site_url in codeigniter?

I have used something like that-
<?php if(current_url() == site_url()): ?>
...
...
<?php endif; ?>
But it's not working. I think there's something that I missed.
If you simply want to check if you're on the homepage of your site try this:
<?php if(strcmp(uri_string(),'')==0) : ?>
We are on the home page.
<?php endif; ?>
This solution will still work regardless of whether the base url is set correctly or not, unlike comparing base_url() and current_url().
Ensure that you have loaded the url helper either in your constructor or via autoloading.

symfony translation for phrase with embedded link_to function

How do you perform translation with an embedded link_to function in the template using Symfony 1.4?
Example:
Please click <php echo link_to('here', sfConfig::get('app_url') ?> for additional info.
I usually do something like this:
echo __("Please click "%placeholder%", array("%placeholder%" => link_to(__("here"), sfConfig::get('app_url'))))
You can also use:
Please click <?php echo __('here') ?> for additional info
Or you can use:
Please click <?php echo link_to(__('here'), sfConfig::get('app_url') ); ?>

how to display the currency symbol?

I used the following code for to display the currency symbol
<?php $_coreHelper = $this->helper('core')?>
<?php echo $_coreHelper->currency('5'); ?>
it displayed like Rs253
I want to display as Rs5
I dont know how to fix it.If anybody know, please help me guys, Thanks in advance
Maybe $this does not have access to helper()
Try
<?php echo Mage::helper('core')->currency(5); ?>

Magento - adding a widget instance to a template file

I know that you can call a cms block directly from a template file using the following:
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('footer_links')->toHtml() ?>
Is there some way to do this with widget instances?
In your template:
<?php
$filter = Mage::getModel('widget/template_filter');
echo $filter->filter('{{widget type="cms/widget_page_link" template="cms/widget/link/link_block.phtml" page_id="2"}}');
?>
Andrew missed toHtml() function at the end:
<?php echo $this->getLayout()->createBlock('cms/widget_page_link')->setTemplate('cms/widget/link/link_block.phtml')->setPageId(2)->toHtml(); ?>
To know the correct parameters "type", "template" and more, you can use the "Insert widget" button on the graphical editor in a block/page template, then you click the show/hide editor and you get the code
The answer above may work, but the same thing can be achieved by loading the widget as you would a static block and passing in the custom parameters using the magic setters like this:
<?php echo $this->getLayout()->createBlock('cms/widget_page_link')->setTemplate('cms/widget/link/link_block.phtml')->setPageId(2); ?>

How to internationalize metas such as title in view.yml?

I'd like to internationalize the strings of my view.yml, I can't find how to do this.
I have a solution that is bad, in my opinion:
metas:
title: <?php echo sfContext::getInstance()->getI18n()->__('TITLE'); ?>
I'd like to find a way to do it without calling "sfConfig::getInstance()". Is it possible?
Never ever use sfContext for I18n in Configuration-Files! In such a case use the setTitle function in the View (not the controller)
<?php $sf_response->setTitle(__('TITLE'));?>
Since include_title() does not translate what it finds in view.yml, I made this very simple function in my custom helper:
function include_translated_title($context)
{
$title = $context->getI18N()->__($context->getResponse()->getTitle());
echo content_tag('title', $title)."\n";
}
Then I use it in my layout.php files:
<head>
<?php include_http_metas() ?>
<?php include_metas() ?>
<?php include_translated_title($sf_context) ?>
This way, I can use translation keys in my view.yml
You can do this in your action instead:
$this->getResponse()->setTitle(sfContext::getInstance()->getI18n()->__('TITLE'));
I dont think there's a way around using sfContext. You might be able to do something like this by getting rid of the default <?php include_title() ?> in your layout/view and the using the template i18n format to internationalise it:
<title><?php echo __('TITLE') ?></title>

Resources