kongondo Posted April 22, 2018 Author Posted April 22, 2018 (edited) On 4/21/2018 at 12:39 AM, adrian said: Is there any reason they can't just return true, rather than returning $this->renderMarkup($page, $field); ? Hi @adrian, ___wakeupValue is needed for frontend access. I am assuming some people use the field in the frontend. ___sleepValue should be able to work with return true only. I'll have to investigate deeper though. The whole module is based on Ryan's concat field. These methods were copied as is (or almost) from that module. So, his module must be having the same issues then. I'll have a look sometime. Still no ETA though, sorry. Edited April 22, 2018 by kongondo 2
adrian Posted April 22, 2018 Posted April 22, 2018 Taking a further look, I agree that wakeupValue is needed in case someone does use on the frontend, but I can't see a need for loadPageField() - so if it was limited to just wakeupValue then it would reduce processing of the code to just once. 2
kongondo Posted April 23, 2018 Author Posted April 23, 2018 (edited) On 3/16/2018 at 4:30 PM, adrian said: I am noticing that the renderMarkup() method is called many times on the currently edited page and it's also called on page reference fields on the page being edited. This makes for a lot of calls to this method that don't seem necessary as far as I can tell. Do you think this can be improved? As an example, I put: bd($page->id); at the top of that method and saw this: @adrian, I have tested and cannot replicate this. I tested with both single and multi page reference fields using different inputs (Asm, Checkboxes, etc). I also tested using render via code and via wire('files')->render('some-file'). This is what I get if I put bd($page->id) at the top of renderMarkup(). 1367 is the ID of the page being edited. The pages saved in the page reference fields are not called. Edit I think there is something else going on in your install. There is nothing peculiar about the field. Apart from renderMarkup(), all the other methods are ProcessWire Field methods. Theoretically, it means if a bug exists, then all Fields should be exhibiting the same behaviour. Edited April 23, 2018 by kongondo 1
kongondo Posted April 23, 2018 Author Posted April 23, 2018 (edited) 11 hours ago, adrian said: but I can't see a need for loadPageField() - so if it was limited to just wakeupValue then it would reduce processing of the code to just once. loadPageField() is required to stop the field from visiting the database. There is a comment right there in the method . Quote // generate value at runtime rather than loading from DB If we remove the method, it will just call its parent loadPageField() (Fieldtype.php). Hence, we override it. We can have it return true. That results in renderMarkup() being called once only (rather than twice currently - once each for wakeupValue() and loadPageField()). Edited April 23, 2018 by kongondo
Manol Posted May 25, 2018 Posted May 25, 2018 I've tried to change the title of the page and it works $page->set('title', 'New title'); $page->save(); return ""; but when I try to change an inputfield of type text it doesn't $page->my_field = '22223333'; // $page->my_field->attr('value', '22223333'); neither works $page->save(); return ""; any advice, thanks.
Manol Posted May 26, 2018 Posted May 26, 2018 Using Runtimemarkup I've tried to change the title of the page and it works $page->set('title', 'New title'); $page->save(); return ""; but when I try to change an inputfield of type text it doesn't $page->my_field = '22223333'; // $page->my_field->attr('value', '22223333'); neither works $page->save(); return ""; any advice, thanks.
flydev Posted May 26, 2018 Posted May 26, 2018 Although I never used this module , you can try : $page->of(false); $page->my_field = '22223333'; $page->save(); // or $page->save('my_field'); // will save only this field $page->of(true); return ""; http://cheatsheet.processwire.com/page/built-in-methods-reference/page-setoutputformatting-true-false/
Manol Posted May 26, 2018 Posted May 26, 2018 Thanks flydev, is not the case, but give this module a try it opens up a new world.
flydev Posted May 26, 2018 Posted May 26, 2018 I just tested and it work well. And yes, look a cool module ? 2 1
Manol Posted May 26, 2018 Posted May 26, 2018 I created a new field and you're right it works, I'll check it thoroughly, many thanks. 1
Manol Posted May 27, 2018 Posted May 27, 2018 Is any way to get the value of a field (Runtimemarkup) from a template : $out .= strtoupper(dechex(strtotime(date("Y-m-d H:i:s", $page->created)))); return $out; I'm getting the following error: Field 'code_codigo' is runtime and not queryable
flydev Posted May 27, 2018 Posted May 27, 2018 Looking at the code, it seem not : public function getMatchQuery($query, $table, $subfield, $operator, $value) { // we don't allow this field to be queried throw new WireException("Field '{$query->field->name}' is runtime and not queryable"); } 1
kongondo Posted May 27, 2018 Author Posted May 27, 2018 (edited) @Manol, It seems your question has been answered? Moderator Note Please don't start different topics about the same issue. Also, use this module's support forum for all questions related to it. I have merged your other topic here. Edited May 27, 2018 by kongondo
kongondo Posted May 27, 2018 Author Posted May 27, 2018 (edited) 1 hour ago, Manol said: Is any way to get the value of a field (Runtimemarkup) from a template : Yes you can get the value. See the examples in the first page, first post of this topic. However, you cannot use a selector to query the value. 1 hour ago, flydev said: Looking at the code, it seem not : Yes, you cannot use a selector to query it, but you can access the value. Edited May 27, 2018 by kongondo 1
Noel Boss Posted June 4, 2018 Posted June 4, 2018 On 7/23/2017 at 3:04 PM, kongondo said: For frontend, only pasted PHP code option is supported. My take is that this module is primarily used for the backend. Use of the render files option is geared for creating complex and/or more flexible backend apps as opposed to frontend usage. I have no intention of changing this behaviour. Would be nice if it is consistent – I use this Field for both, backend and frontend and would love to have the code inside php files.
Macrura Posted June 4, 2018 Posted June 4, 2018 1 hour ago, Noel Boss said: Would be nice if it is consistent – I use this Field for both, backend and frontend and would love to have the code inside php files. @Noel Boss see the dev version
Noel Boss Posted June 6, 2018 Posted June 6, 2018 On 6/4/2018 at 6:21 PM, Macrura said: the dev version This is the description for the dev version. Did not work for me. Ended up with the master and: namespace Processwire; return wireRenderFile('fields/'.$field->name, ['page' => $page]);
Macrura Posted June 6, 2018 Posted June 6, 2018 51 minutes ago, Noel Boss said: This is the description for the dev version. Did not work for me. Ended up with the master and: namespace Processwire; return wireRenderFile('fields/'.$field->name, ['page' => $page]); whatever version i'm using works great and has the option to use files and not pasted code, in the field config.. i thought it was the dev branch.. very stable and i have it running on 5 projects now, basically this is a completely indispensable module, i usually end up with on average 10-15 RM fields on any given project.. 1
Noel Boss Posted June 6, 2018 Posted June 6, 2018 On 6/6/2018 at 5:06 PM, Macrura said: basically this is a completely indispensable module True, it's a great module. But does it work for you in the frontend with files? Because as @kongondo said here: Quote For frontend, only pasted PHP code option is supported. 1
kongondo Posted June 6, 2018 Author Posted June 6, 2018 (edited) 6 hours ago, Noel Boss said: This is the description for the dev version. Did not work for me. Ended up with the master and: namespace Processwire; return wireRenderFile('fields/'.$field->name, ['page' => $page]); Works fine for me here with the dev version, but should also work with the master version (IIRC - sorry, it's been a while since I touched this). Tested in PW 3.0.85. Here's my copy pasted PHP code: // both of these work /*namespace Processwire; return wireRenderFile('runtime-markup-wirerender-test'); */ return ProcessWire\wireRenderFile('runtime-markup-wirerender-test'); The above allows you to have your code inside PHP files. This is the pasted PHP option. It is supported in both front- and back-end. It also allows you to use PHP files, but indirectly. It is not to be confused by the other (currently dev) option of directly rendering PHP files (i.e., just stating name of the PHP file and its path. Are you getting any errors? Tracy? In the template file I echo the field's value like so: echo $page->runtime_markup; Edited June 6, 2018 by kongondo
Noel Boss Posted June 7, 2018 Posted June 7, 2018 Hi @kongondo No, this works just fine. But this is "pasted PHP code" – since you introduced the option to specify files on the dev Version, it would be nice to use this option also in the frontend; Current status: Dev Version: – include files using module: Backend √ + Frontend X – Past Code: Backend √ + Frontend √ Master Version: – Include files using module: Backend X + Frontend X – Past Code: Backend √ + Frontend √ Desired status ? Master Version: – include files using module: Backend √ + Frontend √ – Past Code: Backend √ + Frontend √
kongondo Posted June 7, 2018 Author Posted June 7, 2018 1 hour ago, Noel Boss said: No, this works just fine. But this is "pasted PHP code" – since you introduced the option to specify files on the dev Version, it would be nice to use this option also in the frontend; OK. I'll have a look. Could you please file it as a request on GitHub? It will help remind me, thanks. 1
Noel Boss Posted June 8, 2018 Posted June 8, 2018 Thank you Kogondo! BTW, this is one of the most useful Modules out there! Thank you for developing it! 1
pwfans Posted July 13, 2018 Posted July 13, 2018 Thank you for developing this useful module, now i can send email to certain user from admin easily, inspired from here : For those who need more explanation: Button is actually <a href> to template which will open new page (yes very ugly behaviour, read below) contain custom php code , not inside <form> action because <form> not allowed inside textarea. To prevent opening new page when click the button, make an <iframe> inside the template as a target button, that's it, beautifully execution like native form in admin page. 2
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now