[Templates] Calling class methods with parameters from templates

Robin Smidsrød robin@smidsrod.no
Tue, 03 Jul 2007 17:31:17 +0200


This is a cryptographically signed message in MIME format.

--------------ms060702010204020404090507
Content-Type: multipart/mixed;
 boundary="------------060803020306000507030004"

This is a multi-part message in MIME format.
--------------060803020306000507030004
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Berg, Eric wrote:
> I'm traversing a hierarchy, and need to get one object from another from
> within a template.   I'm having difficulty passing in parameters to my
> instance method from the template.  Here's some code to explain:
>
> I have an array of "suites" from which I get an individual "suite":
>
>   [% FOREACH suite = suites %]
>
> I need to get a "suite_runner" from the suite which I do in regular perl
> code like so:
>
> my $runner = $suite->get_runner(ENVIRONMENT => 'PROD');
>
> I've tried to:
>
> [% runner = suite.get_runner(ENVIRONMENT => env) %]
>
> But I'm getting errors like:
>
> [Tue Jul  3 11:01:23 2007] regression_builder.cgi: Reference found where
> even-sized list expected at .../lib/site_perl//TestSuite.pm line 68.
>   
If you allow you get_runner() method take arguments like this (hashref 
instead of hash-as-array-arguments)

$suite->get_runner({ENVIRONMENT => 'PROD' });

You should probably be out of problems.

-- Robin


--------------060803020306000507030004
Content-Type: text/x-vcard; charset=utf-8;
 name="robin.vcf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="robin.vcf"

YmVnaW46dmNhcmQNCmZuO3F1b3RlZC1wcmludGFibGU6Um9iaW4gU21pZHNyPUMzPUI4ZA0K
bjtxdW90ZWQtcHJpbnRhYmxlOlNtaWRzcj1DMz1COGQ7Um9iaW4NCm9yZztxdW90ZWQtcHJp
bnRhYmxlOlNtaWRzcj1DMz1COGQgQ29uc3VsdGluZw0KYWRyO3F1b3RlZC1wcmludGFibGU6
OztWZXN0cmUgRWtlYmVyZyAzMjtCYXJrPUMzPUE1a2VyO1Zlc3Rmb2xkOzMxNTc7Tm9yd2F5
DQplbWFpbDtpbnRlcm5ldDpyb2JpbkBzbWlkc3JvZC5ubw0KdGl0bGU6SVQta29uc3VsZW50
DQp0ZWw7d29yazorNDcgMzMwMTk0NjgNCnRlbDtob21lOis0NyAzMzAxOTQwNQ0KdGVsO2Nl
bGw6KzQ3IDkxNTkzMzkzDQp4LW1vemlsbGEtaHRtbDpGQUxTRQ0KdXJsOmh0dHA6Ly93d3cu
c21pZHNyb2Qubm8NCnZlcnNpb246Mi4xDQplbmQ6dmNhcmQNCg0K
--------------060803020306000507030004--

--------------ms060702010204020404090507
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIJOTCC
AvcwggJgoAMCAQICEHDoXZ4M8vrK0tGVLC1WzNcwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UE
BhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMT
I1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA3MDUyMjEwMzU0MloX
DTA4MDUyMTEwMzU0MlowXjERMA8GA1UEBBMIU21pZHNyb2QxDjAMBgNVBCoTBVJvYmluMRcw
FQYDVQQDEw5Sb2JpbiBTbWlkc3JvZDEgMB4GCSqGSIb3DQEJARYRcm9iaW5Ac21pZHNyb2Qu
bm8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDF50OGyPArujh2opEBmid/Ismm
bpX1XNwoubu5WgKVMtyAgUgOn6HHda11joIAhmueMXhs1zA+tY11EGdQlSY8dh58UTRMIFY9
3jfwTuk6WrxYHSgC4kAYlJ3y9trk8rsxa62XK1dU6jwCltvxBDuVD3MtQ0JleTW+eATZxkCZ
C21wS8GzUKO6m5Dcle9gQapnzr78x77WqEfZXLtXOqjDLa/courjS7khriV/wn8JN3IbZRbe
YHAPkm+oTnIjKzpzv/wbf1iuTOEapzJ9wg7XMYmoQ5ph65Yo8uLWBqC4RTo6W2v5rl6w9FUT
eUMor6ymydAgQm7BsWzH+h8y1kVHAgMBAAGjLjAsMBwGA1UdEQQVMBOBEXJvYmluQHNtaWRz
cm9kLm5vMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEFBQADgYEAkP/0jJGdmXQReMLpg0S8
Az/St4fRNcQF8ds7erICFMImpnpwKtgbrJf3RzfZQiv+0y+VxsXmQ3hndkFPs/BBD1OGNFg+
Jk80NehXyy3lRNqjRixwVqdgVzYgvslva0lRsxQ+KnItOtbK0z2M9GVuxEp3JU5qHeC+C+jK
1ZRAfxIwggL3MIICYKADAgECAhBw6F2eDPL6ytLRlSwtVszXMA0GCSqGSIb3DQEBBQUAMGIx
CzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSww
KgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQTAeFw0wNzA1MjIx
MDM1NDJaFw0wODA1MjExMDM1NDJaMF4xETAPBgNVBAQTCFNtaWRzcm9kMQ4wDAYDVQQqEwVS
b2JpbjEXMBUGA1UEAxMOUm9iaW4gU21pZHNyb2QxIDAeBgkqhkiG9w0BCQEWEXJvYmluQHNt
aWRzcm9kLm5vMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxedDhsjwK7o4dqKR
AZonfyLJpm6V9VzcKLm7uVoClTLcgIFIDp+hx3WtdY6CAIZrnjF4bNcwPrWNdRBnUJUmPHYe
fFE0TCBWPd438E7pOlq8WB0oAuJAGJSd8vba5PK7MWutlytXVOo8Apbb8QQ7lQ9zLUNCZXk1
vngE2cZAmQttcEvBs1CjupuQ3JXvYEGqZ86+/Me+1qhH2Vy7Vzqowy2v3KLq40u5Ia4lf8J/
CTdyG2UW3mBwD5JvqE5yIys6c7/8G39YrkzhGqcyfcIO1zGJqEOaYeuWKPLi1gaguEU6Oltr
+a5esPRVE3lDKK+spsnQIEJuwbFsx/ofMtZFRwIDAQABoy4wLDAcBgNVHREEFTATgRFyb2Jp
bkBzbWlkc3JvZC5ubzAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBBQUAA4GBAJD/9IyRnZl0
EXjC6YNEvAM/0reH0TXEBfHbO3qyAhTCJqZ6cCrYG6yX90c32UIr/tMvlcbF5kN4Z3ZBT7Pw
QQ9ThjRYPiZPNDXoV8st5UTao0YscFanYFc2IL7Jb2tJUbMUPipyLTrWytM9jPRlbsRKdyVO
ah3gvgvoytWUQH8SMIIDPzCCAqigAwIBAgIBDTANBgkqhkiG9w0BAQUFADCB0TELMAkGA1UE
BhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD
VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl
cyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIENBMSswKQYJ
KoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUuY29tMB4XDTAzMDcxNzAwMDAw
MFoXDTEzMDcxNjIzNTk1OVowYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25z
dWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJ
c3N1aW5nIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEpjxVc1X7TrnKmVoeaMB1
BHCd3+n/ox7svc31W/Iadr1/DDph8r9RzgHU5VAKMNcCY1osiRVwjt3J8CuFWqo/cVbLrzwL
B+fxH5E2JCoTzyvV84J3PQO+K/67GD4Hv0CAAmTXp6a7n2XRxSpUhQ9IBH+nttE8YQRAHmQZ
cmC3+wIDAQABo4GUMIGRMBIGA1UdEwEB/wQIMAYBAf8CAQAwQwYDVR0fBDwwOjA4oDagNIYy
aHR0cDovL2NybC50aGF3dGUuY29tL1RoYXd0ZVBlcnNvbmFsRnJlZW1haWxDQS5jcmwwCwYD
VR0PBAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFQcml2YXRlTGFiZWwyLTEzODAN
BgkqhkiG9w0BAQUFAAOBgQBIjNFQg+oLLswNo2asZw9/r6y+whehQ5aUnX9MIbj4Nh+qLZ82
L8D0HFAgk3A8/a3hYWLD2ToZfoSxmRsAxRoLgnSeJVCUYsfbJ3FXJY3dqZw5jowgT2Vfldr3
94fWxghOrvbqNOUQGls1TXfjViF4gtwhGTXeJLHTHUb/XV9lTzGCA2QwggNgAgEBMHYwYjEL
MAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAq
BgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhBw6F2eDPL6ytLR
lSwtVszXMAkGBSsOAwIaBQCgggHDMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
hvcNAQkFMQ8XDTA3MDcwMzE1MzExN1owIwYJKoZIhvcNAQkEMRYEFE5YJ1UzGM9Vby1uit60
6Paz5qCUMFIGCSqGSIb3DQEJDzFFMEMwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0G
CCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMIGFBgkrBgEEAYI3EAQxeDB2
MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQu
MSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQcOhdngzy
+srS0ZUsLVbM1zCBhwYLKoZIhvcNAQkQAgsxeKB2MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQK
ExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29u
YWwgRnJlZW1haWwgSXNzdWluZyBDQQIQcOhdngzy+srS0ZUsLVbM1zANBgkqhkiG9w0BAQEF
AASCAQC8awkLviOQHcSs3q1Ot6w9vAzg4T/xBGgiid3Pz5BAe4UB4qIXLw1y9geVBYvWNJsw
Quj5z6hKrKrU78qUNGLvWxumvLK53upN3YcgSROQjo3L+iLAzdRhmvvJFyW8Ot6JoE6byn5m
eJE+6wgcIgbzuNZ9KW6Tj50hk3isV8wNePawEEBaRCX51PSrJCpw41Rrv10Mj+24+uGCRmeb
rgLjyB4ztk3N/ytJN9qdWGSsKygEaMjWiyDGA59algU3NmTkjP+oYMoYa8wokm0EtgpnnzDg
G//ik6FtENmvKUutq96XDlf4L5AGFlbQt3DZFrv+XdGWMNzRWc0/maOiWaHUAAAAAAAA
--------------ms060702010204020404090507--