[development] &$node in nodeapi
luca capra
luca.capra at gmail.com
Mon Oct 4 17:53:26 UTC 2010
On 04/10/2010 17:41, Pierre Rineau wrote:
> Le lundi 04 octobre 2010 à 16:50 +0200, luca capra a écrit :
>
>> Good evening,
>>
>> I'm writing a custom module, with a call to hook_nodeapi (on php 5.3,
>> latest drupal 6)
>> I update some cck fields, but looking at the saved node page, these
>> fields are empty.
>>
>> Seems that after the hook, cck fields lose their values.
>>
>> function mymod_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL){
>> switch($op){
>> case "insert":
>> case "update":
>>
>> my_fill_cck(&$node );
>>
>> // here cck are populated
>> // krumo( $node );
>> break;
>> case "load":
>> // viewing node, cck are empty :(
>> // krumo( $node );
>> return array();
>> break;
>> }
>> }
>>
>> Any idea is really appreciated.
>> Thank in advance.
>>
>> Best regards,
>> Luca
>>
> Spotted syntax error:
> my_fill_cck(&$node );
>
> Forcing reference at call time is deprecated already with PHP 5 (if I
> remember well), and using PHP 5.3 could lead the interpreter to ignore
> the function call.
>
> The same for the hook(), if your module is for PHP>=5.2, don't write
> the& in the function signature, $node is an object therefore it's been
> passed by reference anyway, using& in method signature makes it being a
> pointer, which means that some module write $node = NULL will change the
> pointer value (not the object itself) and it may break the execution
> flow after.
>
> Adam was right, use presave to ensure your data is being modified after
> the real save. Or you also could ensure your module has a lower weight
> than the content module, to ensure content_nodeapi() being called after
> your own.
>
> Pierre.
>
>
The $op presave was my problem.
This is a syntax error
my_fill_cck( &$node );
and this should be my hook:
function mymod_nodeapi($node ...
because &$node is a pointer, and what I need is a reference (that is how
is passed an object ). It's right ?
Interesting, I learnt something new :)
Regards,
Luca
More information about the development
mailing list