Re: 3 filters not working, its hard to know based on the information I have. You need to debug by checking what the call to getResources actually looks like. Do that by outputting the parameters to HTML, something like this:
[[!FormItRetriever]]
[[!getResources?
&parents=`[[*id]]`
&tpl=`myRowTpl`
&tvFilters=`class-type==[[!+fi.class-type]],skill-level==[[!+fi.skill-level]],duration==[[!+fi.duration]]`
]]
<!--
class-type==[[!+fi.class-type]],skill-level==[[!+fi.skill-level]],duration==[[!+fi.duration]]
-->
That way you can 'view source' to see what parameters are being passed, and see where you've gone wrong.
Re: default values.. that's a little tricker. Once again a custom snippet might be the cleanest, but you could do it with setPlaceholders plugin. That call to FormItRetriever is just reading the $_POST data (from the form submission), and setting the $_POST values as placeholders. setPlaceholders can do that too, with the additional logic to set the placeholder to a wildcard '%' if the $_POST value doesn't exist.
[[!setPlaceholders?
&ph=`
class-type == post.class-type !! "%" ||
skill-level == post.skill-level !! "%" ||
duration == post.duration !! "%"
`
]]
[[!getResources?
&parents=`[[*id]]`
&tpl=`myRowTpl`
&tvFilters=`class-type==[[!+class-type]],skill-level==[[!+skill-level]],duration==[[!+duration]]`
]]
<!--
class-type==[[!+class-type]],skill-level==[[!+skill-level]],duration==[[!+duration]]
-->
A different method would be a custom snippet. If you create a snippet called 'myFilters' like so:
$output = array();
if (isset($_POST['class-type'])) $output[] = 'class-type==' . $_POST['class-type'];
if (isset($_POST['skill-level'])) $output[] = 'skill-level==' . $_POST['skill-level'];
if (isset($_POST['duration'])) $output[] = 'duration==' . $_POST['duration'];
$output = implode(',', $output);
return $output;
Then you'd leave out the setPlaceholders / FormItRetriever and just call getResources like this:
[[!getResources?
&parents=`[[*id]]`
&tpl=`myRowTpl`
&tvFilters=`[[!myFilters]]`
]]
<!--
[[!myFilters]]
-->
Just keep in mind I haven't actually tried any of this code.. you'll have to debug :p