<div dir="ltr">Good morning Martin<br><div><br>I wrote this Saturday night, it uses Moose as both HTML::FormHandler and Catalyst do... as long as result_source<span class="gmail-pl-k">-&gt;</span>columns_info gives you what I think, it should work... beware I only wrote on quick test :)<br><div class="gmail_extra"><br><a href="https://github.com/ThisUsedToBeAnEmail/HTML-FormHandler-Role-Default/blob/master/lib/HTML/FormHandler/Role/Default.pm">https://github.com/ThisUsedToBeAnEmail/HTML-FormHandler-Role-Default/blob/master/lib/HTML/FormHandler/Role/Default.pm</a><br><br></div><div class="gmail_extra">If you&#39;re adamant on having this logic in your schema I would looking into just writing a new_with_defaults method where you just loop through the Results column info build a hash and then return new_result(%defaults).<br><br></div><div class="gmail_extra">Regards,<br><br></div><div class="gmail_extra">Robert. <br></div><div class="gmail_extra"> <br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Dec 11, 2016 at 7:37 PM, Martin Řehák <span dir="ltr">&lt;<a href="mailto:rehak@tekkirk.org" target="_blank">rehak@tekkirk.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
thank you for kickstarting me. I still don&#39;t understand there is no such method<br>
provided by DBIx already I have resolved the issue with this diff:<br>
<br>
diff -r d65de14e366f lib/reha/Controller/Lesson.pm<br>
--- a/lib/reha/Controller/Lesson.<wbr>pm     Sat Dec 10 17:22:07 2016 +0100<br>
+++ b/lib/reha/Controller/Lesson.<wbr>pm     Sun Dec 11 19:35:28 2016 +0100<br>
@@ -54,17 +54,9 @@<br>
<span class="gmail-">        my ($self, $c, $lesson_id) = @_;<br>
</span>        my ($validated);<br>
<br>
-       my $init_row = $c-&gt;model(&#39;DB::Lesson&#39;)-&gt;new_<wbr>result({});<br>
+       my $row = $c-&gt;model(&#39;DB::Lesson&#39;)-&gt;find_<wbr>or_default({id =&gt; $lesson_id});<br>
<span class="gmail-">        $validated = $self-&gt;formDetail-&gt;process(<br>
</span>-               item =&gt; $init_row,<br>
+               item =&gt; $row,<br>
<span class="gmail-">                params =&gt; $c-&gt;req-&gt;parameters);<br>
<br>
        if ($validated) {<br>
</span>diff -r d65de14e366f lib/reha/Schema.pm<br>
--- a/lib/reha/Schema.pm        Sat Dec 10 17:22:07 2016 +0100<br>
+++ b/lib/reha/Schema.pm        Sun Dec 11 19:35:28 2016 +0100<br>
@@ -8,7 +8,9 @@<br>
 use MooseX::MarkAsMethods autoclean =&gt; 1;<br>
 extends &#39;DBIx::Class::Schema&#39;;<br>
<br>
-__PACKAGE__-&gt;load_namespaces;<br>
+__PACKAGE__-&gt;load_namespaces(<br>
+       default_resultset_class =&gt; &#39;+reha::Schema::ResultSet::<wbr>Base&#39;,<br>
+       resultset_namespace =&gt; &#39;Base&#39;);<br>
<br>
<br>
 # Created by DBIx::Class::Schema::Loader v0.07043 @ 2016-02-05 16:52:32<br>
diff -r d65de14e366f lib/reha/Schema/ResultSet/<wbr>Base.pm<br>
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000<br>
+++ b/lib/reha/Schema/ResultSet/<wbr>Base.pm Sun Dec 11 19:35:28 2016 +0100<br>
@@ -0,0 +1,28 @@<br>
+package reha::Schema::ResultSet::Base;<br>
+<br>
+use strict;<br>
+use warnings;<br>
+<br>
+use base &#39;DBIx::Class::ResultSet&#39;;<br>
+<br>
+sub find_or_default {<br>
+       my $self     = shift;<br>
+       my $attrs    = (@_ &gt; 1 &amp;&amp; ref $_[$#_] eq &#39;HASH&#39; ? pop(@_) : {});<br>
+       my $hash     = ref $_[0] eq &#39;HASH&#39; ? shift : {@_};<br>
+       my $row;<br>
+<br>
+       # return data if found<br>
+       if (keys %$hash and $row = $self-&gt;find($hash, $attrs) ) {<br>
+               return $row;<br>
+       }<br>
+<br>
+       # return new result with defaults prefilled<br>
+       $row = $self-&gt;new_result($hash);<br>
+       foreach my $col ($row-&gt;result_source-&gt;columns) {<br>
+               my $default = $row-&gt;result_source-&gt;column_<wbr>info($col)-&gt;{default_value};<br>
+               $row-&gt;$col($default) if($default &amp;&amp; !defined $row-&gt;$col());<br>
+       }<br>
+       return $row;<br>
+}<br>
+<br>
+1;<br>
<br>
Thank you very much all for patience with my issue.<br>
<br>
Regards<br>
<span class="gmail-HOEnZb"><font color="#888888">--<br>
Martin<br>
</font></span><div class="gmail-HOEnZb"><div class="gmail-h5"><br>
On <a href="tel:2016.12.10%2018" value="+12016121018">2016.12.10 18</a>:00:05 +0100, LNATION . wrote:<br>
&gt; Sorry Long day :) corrected sentence...<br>
&gt;<br>
&gt; The problem is because when you call -&gt;new_result the default_value does<br>
&gt; not get set, which is reasonable behavior the moment you are dealing with<br>
&gt; time. I am unsure whether there is another create method which uses<br>
&gt; database or even the schema column spec.<br>
&gt;<br>
&gt; Regards<br>
&gt;<br>
&gt; Robert<br>
&gt;<br>
&gt; On Sat, Dec 10, 2016 at 5:48 PM, LNATION . &lt;<a href="mailto:thisusedtobeanemail@gmail.com">thisusedtobeanemail@gmail.com</a><wbr>&gt;<br>
&gt; wrote:<br>
&gt;<br>
&gt; &gt; The problem I think is when you call &gt;new_result the default value from<br>
&gt; &gt; your database does get **populated that happens when on insert....<br>
&gt; &gt;<br>
&gt; &gt; On Sat, Dec 10, 2016 at 5:17 PM, Martin Řehák &lt;<a href="mailto:rehak@tekkirk.org">rehak@tekkirk.org</a>&gt; wrote:<br>
&gt; &gt;<br>
&gt; &gt;&gt; Hi,<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; I understand that there is a complicated solution. I am looking for<br>
&gt; &gt;&gt; the simplest way.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Doc says:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &lt;snip&gt;<br>
&gt; &gt;&gt; For forms where you pass in an &#39;item&#39; (usually a database row object),<br>
&gt; &gt;&gt; the values in that object will be used preferentially; if an accessor<br>
&gt; &gt;&gt; exists in the &#39;item&#39; object, then the defaults won&#39;t be used. (If an<br>
&gt; &gt;&gt; accessor doesn&#39;t exist, the defaults *will* be used.)<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; $form-&gt;process( item =&gt; $row, params =&gt; {} );<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; For the above call the &#39;default&#39; on the field will not be used, which is<br>
&gt; &gt;&gt; usually what you want.<br>
&gt; &gt;&gt; &lt;/snip&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; What is the easiest way how to get defaults going from the database<br>
&gt; &gt;&gt; schema into a form, please? Is process() function able to propagate<br>
&gt; &gt;&gt; defaults from $row into $form? How to achieve that?<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Regards<br>
&gt; &gt;&gt; --<br>
&gt; &gt;&gt; Martin<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; On <a href="tel:2016.12.10%2016" value="+12016121016">2016.12.10 16</a>:51:52 +0100, LNATION . wrote:<br>
&gt; &gt;&gt; &gt; My email coding has some syntax errors, apologies.<br>
&gt; &gt;&gt; &gt;<br>
&gt; &gt;&gt; &gt; On Sat, Dec 10, 2016 at 4:50 PM, LNATION . &lt;<br>
&gt; &gt;&gt; <a href="mailto:thisusedtobeanemail@gmail.com">thisusedtobeanemail@gmail.com</a>&gt;<br>
&gt; &gt;&gt; &gt; wrote:<br>
&gt; &gt;&gt; &gt;<br>
&gt; &gt;&gt; &gt; &gt; and then make a role role<br>
&gt; &gt;&gt; &gt; &gt;<br>
&gt; &gt;&gt; &gt; &gt; has default_column_spec =&gt; ( ...)<br>
&gt; &gt;&gt; &gt; &gt;<br>
&gt; &gt;&gt; &gt; &gt; before render =&gt; sub {<br>
&gt; &gt;&gt; &gt; &gt;       while (my ($field, $default) = each %{<br>
&gt; &gt;&gt; $_[0]-&gt;default_column_spec}{<br>
&gt; &gt;&gt; &gt; &gt;           unless ($_[0]-&gt;field($filed)-&gt;value) { # mayb editing<br>
&gt; &gt;&gt; &gt; &gt;                 $_[0]-&gt;field(&#39;$field)-&gt;value($<wbr>default);<br>
&gt; &gt;&gt; &gt; &gt;            }<br>
&gt; &gt;&gt; &gt; &gt;       }<br>
&gt; &gt;&gt; &gt; &gt; }<br>
&gt; &gt;&gt; &gt; &gt;<br>
&gt; &gt;&gt; &gt; &gt;<br>
&gt; &gt;&gt; &gt; &gt; On Sat, Dec 10, 2016 at 4:41 PM, LNATION . &lt;<br>
&gt; &gt;&gt; <a href="mailto:thisusedtobeanemail@gmail.com">thisusedtobeanemail@gmail.com</a>&gt;<br>
&gt; &gt;&gt; &gt; &gt; wrote:<br>
&gt; &gt;&gt; &gt; &gt;<br>
&gt; &gt;&gt; &gt; &gt;&gt; maybe something like ......<br>
&gt; &gt;&gt; &gt; &gt;&gt;<br>
&gt; &gt;&gt; &gt; &gt;&gt;     my $columns = $result-&gt;result_source-&gt;<wbr>columns_info;<br>
&gt; &gt;&gt; &gt; &gt;&gt;     my %default_form_spec;<br>
&gt; &gt;&gt; &gt; &gt;&gt;     for my $name (keys %{$columns}){<br>
&gt; &gt;&gt; &gt; &gt;&gt;          if (my $default = $columns-&gt;{$name}-&gt;{default_<wbr>value}) {<br>
&gt; &gt;&gt; &gt; &gt;&gt;              $default_form_spec{  $name } = $default;<br>
&gt; &gt;&gt; &gt; &gt;&gt;          }<br>
&gt; &gt;&gt; &gt; &gt;&gt;     }<br>
&gt; &gt;&gt; &gt; &gt;&gt;<br>
&gt; &gt;&gt; &gt; &gt;&gt;<br>
&gt; &gt;&gt; &gt; &gt;&gt;<br>
&gt; &gt;&gt; &gt; &gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &gt; ______________________________<wbr>_________________<br>
&gt; &gt;&gt; &gt; List: <a href="mailto:Catalyst@lists.scsys.co.uk">Catalyst@lists.scsys.co.uk</a><br>
&gt; &gt;&gt; &gt; Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" rel="noreferrer" target="_blank">http://lists.scsys.co.uk/cgi-<wbr>bin/mailman/listinfo/catalyst</a><br>
&gt; &gt;&gt; &gt; Searchable archive: <a href="http://www.mail-archive.com/ca" rel="noreferrer" target="_blank">http://www.mail-archive.com/ca</a><br>
&gt; &gt;&gt; <a href="http://talyst@lists.scsys.co.uk/" rel="noreferrer" target="_blank">talyst@lists.scsys.co.uk/</a><br>
&gt; &gt;&gt; &gt; Dev site: <a href="http://dev.catalyst.perl.org/" rel="noreferrer" target="_blank">http://dev.catalyst.perl.org/</a><br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; ______________________________<wbr>_________________<br>
&gt; &gt;&gt; List: <a href="mailto:Catalyst@lists.scsys.co.uk">Catalyst@lists.scsys.co.uk</a><br>
&gt; &gt;&gt; Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" rel="noreferrer" target="_blank">http://lists.scsys.co.uk/cgi-<wbr>bin/mailman/listinfo/catalyst</a><br>
&gt; &gt;&gt; Searchable archive: <a href="http://www.mail-archive.com/ca" rel="noreferrer" target="_blank">http://www.mail-archive.com/ca</a><br>
&gt; &gt;&gt; <a href="http://talyst@lists.scsys.co.uk/" rel="noreferrer" target="_blank">talyst@lists.scsys.co.uk/</a><br>
&gt; &gt;&gt; Dev site: <a href="http://dev.catalyst.perl.org/" rel="noreferrer" target="_blank">http://dev.catalyst.perl.org/</a><br>
&gt; &gt;&gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
<br>
&gt; ______________________________<wbr>_________________<br>
&gt; List: <a href="mailto:Catalyst@lists.scsys.co.uk">Catalyst@lists.scsys.co.uk</a><br>
&gt; Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" rel="noreferrer" target="_blank">http://lists.scsys.co.uk/cgi-<wbr>bin/mailman/listinfo/catalyst</a><br>
&gt; Searchable archive: <a href="http://www.mail-archive.com/catalyst@lists.scsys.co.uk/" rel="noreferrer" target="_blank">http://www.mail-archive.com/<wbr>catalyst@lists.scsys.co.uk/</a><br>
&gt; Dev site: <a href="http://dev.catalyst.perl.org/" rel="noreferrer" target="_blank">http://dev.catalyst.perl.org/</a><br>
<br>
<br>
______________________________<wbr>_________________<br>
List: <a href="mailto:Catalyst@lists.scsys.co.uk">Catalyst@lists.scsys.co.uk</a><br>
Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" rel="noreferrer" target="_blank">http://lists.scsys.co.uk/cgi-<wbr>bin/mailman/listinfo/catalyst</a><br>
Searchable archive: <a href="http://www.mail-archive.com/catalyst@lists.scsys.co.uk/" rel="noreferrer" target="_blank">http://www.mail-archive.com/<wbr>catalyst@lists.scsys.co.uk/</a><br>
Dev site: <a href="http://dev.catalyst.perl.org/" rel="noreferrer" target="_blank">http://dev.catalyst.perl.org/</a><br>
</div></div></blockquote></div><br></div></div></div>