vweb: populate action method params with form values
							parent
							
								
									4d7bb95c2f
								
							
						
					
					
						commit
						da58ba0d5c
					
				|  | @ -8584,7 +8584,7 @@ fn (mut c Checker) verify_all_vweb_routes() { | |||
| 						continue | ||||
| 					} | ||||
| 					if f.return_type == typ_vweb_result && f.receiver.typ == m.params[0].typ | ||||
| 						&& f.name == m.name { | ||||
| 						&& f.name == m.name && !f.attrs.contains('post') { | ||||
| 						c.change_current_file(f.source_file) // setup of file path for the warning
 | ||||
| 						c.warn('mismatched parameters count between vweb method `${sym_app.name}.$m.name` ($nargs) and route attribute $m.attrs ($nroute_attributes)', | ||||
| 							f.pos) | ||||
|  |  | |||
|  | @ -100,6 +100,9 @@ fn (mut g Gen) comptime_call(node ast.ComptimeCall) { | |||
| 		if m.params.len - 1 != node.args.len && !expand_strs { | ||||
| 			// do not generate anything if the argument lengths don't match
 | ||||
| 			g.writeln('/* skipping ${node.sym.name}.$m.name due to mismatched arguments list */') | ||||
| 			// g.writeln('println(_SLIT("skipping ${node.sym.name}.$m.name due to mismatched arguments list"));')
 | ||||
| 			// eprintln('info: skipping ${node.sym.name}.$m.name due to mismatched arguments list\n' +
 | ||||
| 			//'method.params: $m.params, args: $node.args\n\n')
 | ||||
| 			// verror('expected ${m.params.len-1} arguments to method ${node.sym.name}.$m.name, but got $node.args.len')
 | ||||
| 			return | ||||
| 		} | ||||
|  |  | |||
|  | @ -473,7 +473,16 @@ fn handle_conn<T>(mut conn net.TcpConn, mut app T, routes map[string]Route) { | |||
| 				// should be called first.
 | ||||
| 				if !route.path.contains('/:') && url_words == route_words { | ||||
| 					// We found a match
 | ||||
| 					app.$method() | ||||
| 					if req.method == .post { | ||||
| 						// Populate method args with form values
 | ||||
| 						mut args := []string{cap: method.args.len} | ||||
| 						for param in method.args { | ||||
| 							args << form[param.name] | ||||
| 						} | ||||
| 						app.$method(args) | ||||
| 					} else { | ||||
| 						app.$method() | ||||
| 					} | ||||
| 					return | ||||
| 				} | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue