Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Archive /

Our old forums are still available as a read-only archive.

Moderators: martimiz, Sean, biapar, Willr, Ingo, simon_w

Setting 'main' Title from within controller


Reply


3 Posts   1711 Views

Avatar
dio5

Community Member, 501 Posts

3 October 2007 at 10:56pm

Edited: 11/10/2007 9:46pm

Hi guys,

I'm having this function in my TipHolder_Controller (extends Page_Controller):

function edit()
{
$output = array(
         "EditForm" => $this->EditForm,
         "Title" => "Wijzig Je Locatie"
         );
   return $this->customise($output)->renderWith(array('EditForm', 'Page'));
}

When doing that I get this error:

FATAL ERROR: ViewableData_Customised::obj() 'Title' was requested from the array data as an object but it's not an object. I can't cast it.

I want to change the normal page title from within that action...
I'm actually not seeing the difference (yet) with what there's going on in the search tutorial - results method, where it's not working for me either
see [url]http://doc.silverstripe.com/doku.php?id=tutorial:4-site-search#showing_the_results[/url]

Avatar
dio5

Community Member, 501 Posts

14 October 2007 at 5:36am

Nobody?

This even seems to crash the 'lostpassword' function, that also seems to set the title..?

Avatar
blueskies

Community Member, 42 Posts

16 January 2008 at 10:57pm

Hi dio5,

I just ran into the same problem and have a solution.

My situation was as follows: Because I needed to use the LimitWordCount method on the title of the page, I had to cast it to a text (default it is a varchar and LimitWordCount is not available on that).

So I added:

static $casting = array(
    "Title" => "Text",
   );

When I subsequently implemented a search (search tutorial) and added this:

$data = array(
         'Results' => $form->getResults(),
         'Query' => $form->getSearchQuery(),
         'Title' => "Search results"
      );

I got the "I can't cast" error because now there wasn't an object to cast, but there was only a string.

I solved it by changing the Title in the $data array:

$obj = new Varchar("Title"); // Or set this to Text/etc...
$obj->setValue("This is my page title");
      
$data = array(
   'Results' => $form->getResults(),
   'Query' => $form->getSearchQuery(),
   'Title' => $obj
);

Now the title is an object and all code works happily ever after...