PHP Classes

smarty plugin error

Recommend this page to a friend!

      PHP Forms Class with HTML Generator and JavaScript Validation  >  PHP Forms Class with HTML Generator and JavaScript Validation package blog  >  How to Show Google Ma...  >  All threads  >  smarty plugin error  >  (Un) Subscribe thread alerts  
Subject:smarty plugin error
Summary:Error while using the smarty plugin
Messages:5
Author:david ajowi
Date:2009-03-19 10:12:06
Update:2009-03-23 07:09:47
 

  1. smarty plugin error   Reply   Report abuse  
Picture of david ajowi david ajowi - 2009-03-19 10:12:06
Hi,
It is my first time to use the smarty plugin for the forms generation class in my projects. However I get this error:

Fatal error: Call to a member function AddDataPart() on a non-object in ../plugins/insert.formadddatapart.php on line 18.

When I try to var_dump($tpl_vars['form']) it dumps an object.

I would appreciate any help from you people.

Regards,

Ajowi

  2. Re: smarty plugin error   Reply   Report abuse  
Picture of Manuel Lemos Manuel Lemos - 2009-03-19 18:58:57 - In reply to message 1 from david ajowi
It is hard to tell without seeing your code.

Maybe you are reassigning the template variable to something else that is not the form object.

  3. Re: smarty plugin error   Reply   Report abuse  
Picture of david ajowi david ajowi - 2009-03-20 06:59:12 - In reply to message 2 from Manuel Lemos
Hi Manuel,

Thanks for your reply. Here is the code.

<?php

include('../setup/smarty_setup.php');
/*
* Include Smarty template prefilter plugin function
*
*/

require("plugins/prefilter.form.php");

/*
* Include form class code.
*/
require("../forms/forms.php");

/*
* Create a form object.
*/
$form=new form_class;

$form->NAME="company_form";

$form->METHOD="GET";

$form->ACTION="";

$form->ResubmitConfirmMessage="Are you sure you want to submit this form again?";

$form->OptionsSeparator="<br>\n";

/*
* Output all validation errors.
*/
$form->ShowAllErrors=1;

/*
* CSS class for invalid inputs.
*
*/
$form->InvalidCLASS='invalid';

/*
* Define the form field properties even if they may not be displayed.
*/
$form->AddInput(array(
"TYPE"=>"text",
"NAME"=>"company_name",
"ID"=>"company_name",
"MAXLENGTH"=>100,
"Capitalization"=>"lowercase",
"ValidateAsNotEmpty"=>1,
"ValidationErrorMessage"=>"Company name is required",
"LABEL"=>"<u>C</u>ompany name",
"ACCESSKEY"=>"C"
));
$form->AddInput(array(
"TYPE"=>"text",
"NAME"=>"reg_number",
"ID"=>"reg_number",
"MAXLENGTH"=>100,
"Capitalization"=>"lowercase",
"ValidateAsNotEmpty"=>1,
"ValidationErrorMessage"=>"Company registration number is required",
"LABEL"=>"<u>R</u>egistration No.",
"ACCESSKEY"=>"R"
));

$form->AddInput(array(
"TYPE"=>"hidden",
"NAME"=>"doit",
"VALUE"=>1
));

...............

/*I process form here normally */

$form->LoadInputValues($form->WasSubmitted("doit"));

$verify=array();

if($form->WasSubmitted("doit"))
{

if(($error_message=$form->Validate($verify))=="")
{
$doit=1;

}
else
{
$doit=0;
$error_message=HtmlEntities($error_message);
}
}
else
{
$error_message="";
$doit=0;
}
if($doit)
{

$form->ReadOnly=1;
}

/*
* I Create the Smarty engine object to process the form template first
*
*/

$smarty=&new EicharTemplateEngine();
if($smarty->template_exists("company_form.tpl"))
{
$smarty->assign_by_ref("form",$form);/* I assign the object here*/
$smarty->assign("title","General Company Information");
$smarty->assign("error_message",$error_message);
$smarty->assign_by_ref("verify",$verify);
$smarty->assign("doit",$doit);
$smarty->assign("mark","[Verify]");
$smarty->register_prefilter("smarty_prefilter_form");
$smarty->fetch("company_form.tpl");
$smarty->unregister_prefilter("smarty_prefilter_form");
}

........................


/*
* I Output the form within a page using a Smarty page template
*/
if($smarty->template_exists("company_info.tpl"))
{
$onload=HtmlSpecialChars($form->PageLoad());
$smarty->assign("form", $form->FetchOutput());
$smarty->assign("title", "General Company Information");
$smarty->assign("onload", $onload);
$smarty->assign('styles', '.invalid { border-color: #ff0000; background-color: #fff; }');
$smarty->display("company_info.tpl");
}
?>

And here is the template.

{include file="formerror.tpl"}
<center><table summary="Form table" border="1" bgcolor="#c0c0c0" cellpadding="2" cellspacing="1">
<tr>
<td bgcolor="#000080" style="border-style: none;"><font color="#ffffff"><b>{$title}</b></font></td>
</tr>
<tr>
<td style="border-style: none">
<center><table summary="Input fields">

<tr>
<th align="right">{label for="company_name"}:</th>
<td>{input name="company_name"}</td>
{if isset($verify.company_name)}<td>{$mark}</td>
{/if}

<th align="right">{label for="reg_number"}:</th>
<td>{input name="reg_number"}</td>
{if isset($verify.reg_number)}<td>{$mark}</td>
{/if}
</tr>
.......................

Once again the error is caught in plugins/prefilter.form.php which I have not edited.

Regards,

  4. Re: smarty plugin error   Reply   Report abuse  
Picture of Manuel Lemos Manuel Lemos - 2009-03-20 08:24:35 - In reply to message 3 from david ajowi
I could not reproduce your error because you use a different Smarty class and you used a template file that you did not provide.

Anyway, it seems the problem may be caused by the line:

$smarty->assign("form", $form->FetchOutput());

It reassigns the form template variable which would not be a problem if $smarty->unregister_prefilter("smarty_prefilter_form") was working. I don't know what changed Smarty class you are using but that may be the root of your problem.

To avoid further problems, I suggest changing the form template variable to something like company_form and change your template too.


Alternatively, since your form uses a pretty straightforward vertical layout, I suggest using the form_layout_vertical forms class plug-in. Take a look at the test_auto_layout_form.php example script.

There is an even more productive plug-in for AJAX scaffolding that was just announced to be in beta. It needs documentation but it is certainly a giant leap forward in productivity that you may want to check out.

phpclasses.org/blog/package/1/post/ ...

  5. Re: smarty plugin error   Reply   Report abuse  
Picture of david ajowi david ajowi - 2009-03-23 07:09:47 - In reply to message 4 from Manuel Lemos
Problem solved by the form_layout_vertical forms class plug-in

Thanks