Forums / Setup & design / Error when searching
Kjell Inge Sandvik
Wednesday 31 August 2005 7:55:36 am
Hello again!
I want to make a (simple) searchform, and the template for this is:
{set-block scope=root variable=cache_ttl}0{/set-block} <div id="mediaSok"> <div id="tittel"><h2>Mediasøk<img src={"mappeIkon.gif"|ezimage}></h2></div> <form action={"/content/advancedsearch/"|ezurl} method="get"> <input class="inputText" type="text" name="AnyWordSearchText" value="" /> <select size="1" class="inputSelect" name="SearchContentClassID"> <option value="-1" selected>Alle medium</option> <option value="77">Bilder</option> <option value="84">Dokumenter</option> <option value="95">Media</option> </select> <input class="inputSubmit" name="SearchButton" type="submit" value="" /> </form> </form> </div>
When executed, I get a rather ugly error:<i>Fatal error: Call to a member function on a non-object in /home/mediabase/domains/mediabase.no/public_html/kernel/content/advancedsearch.php on line 129</i>
What is wrong here?
Sandvik Web & Data
Kristof Coomans
Wednesday 31 August 2005 11:48:39 pm
Relevant code in advancedsearch.php:
if ( $http->hasVariable( 'SearchContentClassID' ) and $http->variable( 'SearchContentClassID' ) != -1 ) { $searchContentClassID = $http->variable( 'SearchContentClassID' ); $searchContentClass =& eZContentClass::fetch( $searchContentClassID ); $searchContentClassAttributeArray =& $searchContentClass->fetchSearchableAttributes(); }
I think one of the option values in your template is not a valid content class ID, and eZContentClass::fetch( ) returns false. $searchContentClass is not an object, and you'll get the error.
independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org
Thursday 01 September 2005 12:48:04 am
How can I proceed here?
Thursday 01 September 2005 12:57:13 am
Check the class ID's of Bilder, Dokumenter and Media.
You can also make the options more dynamic with the following code, if you can assume the class identifiers won't change:
{def $classes=fetch( 'class', 'list', hash( 'class_filter', array( 'bilder', 'dokumenter', 'media' ) ) )} {foreach $classes as $class} <option value="{$class.id}">{$class.name|wash}</option> {/foreach} {undef $classes}